Tại sao tên gói chứa số phiên bản?


15

Khi làm việc với Ubuntu và các bản phân phối dựa trên Debian khác, tôi đã nhận thấy rằng các gói trong kho phần mềm thường chứa số phiên bản chính.

Ví dụ,

  • Apache: apache2
  • Mèo con: tomcat7
  • PHP: php5
  • Rượu: wine1.4
  • MySQL: mysql-server-5.5

Tuy nhiên, tôi nhận thấy rằng không có apache1gói nào có sẵn và tương tự cho phần còn lại. Nếu tên của gói thay đổi với các bản cập nhật cho phần mềm, thì điều đó có cản trở một trong những mục tiêu chính của quản lý gói (nâng cấp dễ dàng) không?

Nếu Apache 3 xuất hiện vào ngày mai, tôi có phải cài đặt apache3gói theo cách thủ công nếu tôi muốn nâng cấp không? '

Câu trả lời:


26

Các gói được đặt tên giống như ở nơi có (hoặc đã) cần giảm bớt sự chuyển đổi giữa hai phiên bản chính của gói và thời gian cần thiết để làm như vậy dự kiến ​​sẽ kéo dài. Trong giai đoạn chuyển tiếp, cả hai phiên bản mới và cũ đều được cung cấp, với sự hiểu rằng vào một thời điểm nào đó, phiên bản cũ hơn sẽ bị ngừng sử dụng.

Đôi khi, giai đoạn chuyển tiếp đang diễn ra trong quá trình phát hành hệ thống mà bạn hiện đang sử dụng. Đối với một số gói, nó thường xảy ra đủ để bạn có thể thấy các phiên bản gói chuyển tiếp trong mỗi bản phát hành hệ thống mới. Các công cụ phát triển phần mềm thường rơi vào danh mục này, vì việc nâng cấp lên các công cụ mới theo cùng lịch trình với việc phát hành hệ thống có thể không thực tế. Sự phụ thuộc của công ty tôi vào các phiên bản cụ thể của GCC, Autoconf và Perl có thể theo chu kỳ 5 năm, trong khi hệ điều hành của tôi có thể theo chu kỳ nâng cấp 3 năm. Do đó, nó giúp tôi dễ dàng chấp nhận các HĐH mới hơn nếu nó bao gồm các phiên bản cũ hơn của một số gói ngoài bất kỳ thứ gì hiện tại vào thời điểm HĐH mới đang được phát triển.

Những lần khác, những thay đổi phiên bản chính này đã xảy ra từ lâu, trong quá khứ và bây giờ tất cả mọi người đều ở phiên bản hiện tại. Đây là trường hợp với Apache, ví dụ. Thay đổi 1.3 thành 2.0 là một thỏa thuận lớn hơn nhiều so với quan điểm tương thích so với bất kỳ thay đổi nào trong phiên bản 2.x, vì vậy một khi mọi người đã tắt 1.3, không còn cần phải tiếp tục cung cấp nhiều phiên bản Apache trong một bản phát hành HĐH nhất định. Nhưng, một khi bạn đã có tất cả mọi người sử dụng apache2gói, sẽ không có lý lẽ nào tốt để đổi tên lại apache. Điều đó sẽ gây ra một rắc rối nâng cấp không cần thiết. Bên cạnh đó, nơi có nhu cầu nhận thức trong quá khứ để cung cấp hai phiên bản song song tạm thời, nhu cầu có thể sẽ tái diễn trong tương lai.

Thực hành đặt tên gói này thường chỉ xảy ra với các thư viện hoặc các gói cốt lõi quan trọng. Đối với các gói ngoại vi hơn, bạn sẽ chỉ cần nâng cấp lên bất cứ thứ gì hiện tại.

Các thư viện thường được xử lý theo cách này hơn các ứng dụng bởi vì về bản chất, các gói khác phụ thuộc vào chúng. Thư viện càng phổ biến thì càng không thực tế khi yêu cầu mọi gói khác tùy thuộc vào nó được xây dựng lại và hoàn toàn chống lại nó để thư viện có thể được nâng cấp lên phiên bản chính mới mà không có giai đoạn chuyển tiếp này.

Thông thường khi một ứng dụng đang được xử lý theo cách này, đó là vì nó chứa một thành phần thư viện. Ví dụ, Apache không chỉ là một máy chủ web, nó còn cung cấp API phát triển cho các plugin. ( mod_fooVà như vậy). Nếu ai đó có một tuổi mod_somethingliên kết chống lại Apache 1.3 Plugin ABI và đã không được nâng cấp nó để sử dụng phiên bản mới hơn 2.0 API, đó là thuận tiện nếu hệ điều hành của bạn tiếp tục cung cấp Apache cũ 1,3 đến khi tất cả những người sáng tạo Plugin có cơ hội để cập nhật plugin của họ.


3

Từ những gì tôi đã thấy, lý do cho điều này là:

  • Trợ giúp di chuyển trong các bản phát hành chính của các gói: khi PHP 5 được phát hành, có thể cần phải có bản cài đặt PHP 4. Điều này cho phép một người có sự lựa chọn giữa các phiên bản (ít nhất là cho đến khi phiên bản cũ hơn lỗi thời).

  • Tiếp tục cung cấp các bản cập nhật cho phiên bản cũ hơn của phần mềm (ví dụ: sau khi Apache 3 được phát hành, có thể cần phải vá Apache 2) mà không cần nâng cấp lên bản phát hành chính mới hơn.

Ví dụ: nhân Linux có (tính đến ngày hôm nay) các phiên bản ổn định 3.5, 3.4.7, 3.2.24, 2.6.35.13, v.v .... Nếu bạn đang chạy 2.6,35 trên một hệ thống và bạn muốn duy trì nó- đến nay, nhưng không nâng cấp kernel này, bạn có thể cài đặt gói đầy đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.