Để xuất bản các gói RPM của một số phiên bản khác nhau của một số phần mềm, tôi đang tìm cách chỉ định "số" phiên bản được coi là "nâng cấp" và bao gồm phân biệt một số phiên bản trước khi phát hành, như (theo thứ tự ): "2.4.0 alpha 1", "2.4.0 alpha 2", "2.4.0 alpha 3", "2.4.0 beta 1", "2.4.0 beta 2", "Ứng viên phát hành 2.4.0", "2.4.0 cuối cùng", "2.4.1", "2.4.2", v.v.
Vấn đề chính tôi gặp phải là RPM cho rằng "2.4.0" xuất hiện sớm hơn "2.4.0.alpha1", vì vậy tôi không thể chỉ thêm hậu tố vào cuối số phiên bản cuối cùng.
Tôi có thể thử "2.4.0.alpha1", "2.4.0.beta1", "2.4.0.final", sẽ hoạt động, ngoại trừ "ứng cử viên phát hành" sẽ được xem xét muộn hơn "2.4.0.final ".
Một cách khác tôi đã xem xét là sử dụng phần "epoch:" của số phiên bản RPM (tiền tố epoch: được xem xét trước số phiên bản chính để "1: 2.4.0" thực sự sớm hơn "2: 1.0.0") . Bằng cách đặt dấu thời gian trong trường epoch: tất cả các phiên bản được sắp xếp theo dự kiến của RPM, vì các phiên bản của chúng dường như tăng theo thời gian. Tuy nhiên, điều này không thành công khi các bản phát hành mới được thực hiện trên một số phiên bản chính cùng một lúc (ví dụ: 2.3.2 được phát hành sau 2.4.0, nhưng phiên bản dành cho RPM của chúng là "20121003: 2.3.2" và "20120928: 2.4. 0 "và các hệ thống trên 2.3.2 không thể được" nâng cấp "lên 2.4.0, vì vòng / phút xem nó là phiên bản cũ hơn). Trong trường hợp này, yum / zypper / etc từ chối nâng cấp lên 2.4.0, do đó, vấn đề của tôi.
Tôi có thể sử dụng số phiên bản nào để đạt được điều này và đảm bảo rằng RPM luôn coi số phiên bản là theo thứ tự. Hoặc nếu không phải số phiên bản, cơ chế khác trong bao bì RPM?
Lưu ý 1: Tôi muốn giữ trường "Phát hành:" của tệp spec cho mục đích ban đầu của nó (một số bản phát hành gói, bao gồm thay đổi bao bì, cho cùng một phiên bản của phần mềm đóng gói).
Lưu ý 2: Điều này sẽ hoạt động trên các phiên bản sản xuất hiện tại của các bản phân phối chính, chẳng hạn như RHEL / CentOS 6 và SLES 11. Nhưng tôi cũng quan tâm đến các giải pháp không quá, miễn là chúng không liên quan đến việc biên dịch lại vòng / phút!
Lưu ý 3: Trên các hệ thống giống như Debian, dpkg sử dụng một thành phần đặc biệt trong số phiên bản là ký tự "~" (dấu ngã). Điều này khiến dpkg tính hậu tố là thứ tự "âm", do đó "2.4.0 ~ bất cứ thứ gì" sẽ đến trước "2.4.0". Sau đó, thứ tự thông thường áp dụng sau "~", vì vậy "2.4.0 ~ alpha1" xuất hiện trước "2.4.0 ~ beta1" vì "alpha" xuất hiện trước "beta" theo thứ tự bảng chữ cái. Tôi không nhất thiết tìm cách sử dụng cùng một sơ đồ cho các gói RPM (tôi khá chắc chắn không tồn tại tương đương như vậy), vì vậy đây chỉ là FYI.