Trang chủ Bài viết Cơ sở dữ liệu Postgres 18.7: Gói Debian và Red Hat bảo vệ người dùng khỏi cài đặt sai phiên bản
Cơ sở dữ liệu 14/11/2026 12 lượt xem

Postgres 18.7: Gói Debian và Red Hat bảo vệ người dùng khỏi cài đặt sai phiên bản

Postgres 18.7: Gói Debian và Red Hat bảo vệ người dùng khỏi cài đặt sai phiên bản

Bài viết của Jeremy Schneider là phần tiếp nối nhanh cho bài blog hôm trước, sau khi bản phát hành Postgres mới mang đến vài bất ngờ mà ông chưa kịp theo dõi. Ông khuyên đọc blog của Devrim và mục "5-minutes-of-postgres" của Lukas để nắm tóm tắt nhanh.

Ràng buộc phiên bản trên Debian

Trong bài trước, ông đã nêu việc gói RPM nay thêm header yêu cầu một phiên bản minor cụ thể, và lưu ý chưa kiểm tra hệ sinh thái Debian. Sáng nay ông xác nhận gói Debian cũng có cơ chế bảo vệ tương tự.

Điều này quan trọng vì nhiều người sẽ không nâng cấp Postgres ngay hôm nay dù được khuyến nghị. Tuần sau, khi họ cài một extension mới, trình quản lý gói của hệ điều hành sẽ cố kéo phiên bản mới nhất. Devrim và Christoph, hai người đóng gói Postgres chính, đã đảm bảo hệ thống đóng gói bảo vệ người dùng khỏi một lần cài đặt hỏng.

Trên Debian, nếu giữ nguyên postgresql-18 bằng apt-mark hold rồi cài postgresql-18-cron, quá trình cài sẽ thất bại với thông báo gói phụ thuộc yêu cầu postgresql-18 lớn hơn 18.7 trong khi máy đang có 18.6. Khi bỏ hold và cài lại, hệ thống sẽ nâng cấp postgresql-18 lên 18.7 cùng các gói liên quan rồi mới cài extension. Metadata của gói cho thấy ràng buộc Depends: postgresql-18 (>> 18.7).

Ràng buộc trên Red Hat

Trên Rocky, khi thử cài extension không kèm phiên bản trong lúc chặn nâng cấp Postgres bằng tùy chọn exclude, việc cài cũng thất bại: gói pg_cron_18 yêu cầu postgresql18-libs phiên bản ít nhất 18.7 nhưng gói này bị bộ lọc loại ra. Khi cho phép nâng cấp, lệnh cài sẽ đồng thời nâng postgresql18, postgresql18-libs và postgresql18-server lên 18.7 rồi cài pg_cron_18. Yêu cầu RPM tương ứng là postgresql18-libs(x86-64) >= 18.7 cùng postgresql18-server.

Ảnh hưởng với người chạy Postgres trên Kubernetes

Phần lớn người chạy Postgres trên Kubernetes hiện nay tự xây container image với extension được build sẵn, thường dùng trực tiếp các gói Debian. Cơ chế bảo vệ nêu trên cũng bảo vệ nhóm này: nếu container build thành công thì bạn đã có tổ hợp phiên bản đúng.

CloudNativePG cung cấp extension container cho Postgres 18 trở lên. Nếu dùng catalog extension của CNPG thì bạn được bảo đảm vì chúng hoạt động như rolling release; hôm qua nhóm đã cập nhật catalog với phiên bản mới nhất của cả Postgres lõi lẫn mọi extension. Tuy nhiên, nếu tự chọn và ghim digest/phiên bản extension độc lập với digest/phiên bản máy chủ Postgres, bạn phải tự chịu trách nhiệm không trộn extension mới với máy chủ cũ.

Nguồn: Planet PostgreSQL

Trích nguồn từ: Planet PostgreSQL

Chia sẻ:

Bài viết liên quan

Zalo