PostgreSQL 18 RPM 패키지의 새로운 기능과 PGDG 저장소
작성자: Devrim Gündüz | 2025년 9월 24일
최종 수정일: 2026년 8월 27일
PostgreSQL 커뮤니티의 PGDG RPM 저장소는 PostgreSQL뿐만 아니라 PostGIS와 같은 확장 기능, 관련 유틸리티 및 지원 라이브러리를 함께 제공합니다. 이 글에서는 PGDG RPM 저장소의 구성과 운영 방식을 살펴보고, PostgreSQL 18 RPM 패키지에 적용된 OAuth2, io_uring, NUMA 인식, ECPG 서브패키지 및 systemd 통합 변경 사항을 소개합니다.
핵심 내용
- PGDG RPM 저장소는 Non-common, Common, Non-free, Extras의 네 가지 주요 세트로 구성됩니다.
- 현재 총 346개의 소프트웨어 패키지를 유지 관리하고 있습니다.
- PostgreSQL 18 RPM에는 OAuth2 지원을 위한 별도 라이브러리 패키지가 추가됩니다.
- 지원되는 운영체제에서는 io_uring과 NUMA 인식 기능을 활용할 수 있습니다.
- ECPG 라이브러리 분리와 systemd-sysusers 통합도 적용되었습니다.
PGDG RPM 저장소의 발전과 운영
제가 PostgreSQL RPM을 만들기 시작한 지 23년이 넘었습니다. 처음에는 제 Red Hat Linux 6.2 시스템과 Fedora Core에 PostgreSQL을 설치하기 위한 취미 프로젝트였습니다. 당시에는 제대로 구축된 저장소도 없었습니다.
2005년경 캐나다에서 최초의 yum.postgresql.org 인프라를 구축했습니다. 당시에는 다른 도메인명을 사용했지만, 이후 정식 소스 코드 저장소를 만들었으며 마침내 PostgreSQL.org 인프라에 통합되었습니다. 현재 저장소는 PostgreSQL YUM Repository에서 확인할 수 있습니다.
2011년 EDB에 합류한 후, EDB는 제가 커뮤니티 프로젝트에 전념할 수 있도록 지원했습니다. 그중 가장 주목할 만한 프로젝트가 PGDG RPM 저장소입니다. EDB는 패키징 품질 보증(QA)에도 기여하고 있습니다. 여러 EDB 직원이 정기적으로 테스트 결과에 대한 피드백을 제공하며, 저희는 발견된 문제를 즉시 해결합니다.
이는 단순한 패키징 작업에 그치지 않습니다. RPM 생태계의 발전에 맞춰 필요한 변경 사항을 적용하고, 각 릴리스 전에 확장 기능을 테스트합니다. 호환성 문제가 발견되면 관련 소프트웨어에 대한 이슈도 생성합니다.
PostgreSQL 커뮤니티 YUM 저장소에는 PostgreSQL 패키지뿐만 아니라 특정 PostgreSQL 버전에 의존하는 PostGIS 등의 확장 기능, 여러 버전에서 사용할 수 있는 PostgreSQL 관련 패키지, 그리고 Proj 및 GEOS와 같은 지원 라이브러리도 포함됩니다.
PGDG RPM 저장소의 네 가지 주요 구성
- Non-common repository: 특정 PostgreSQL 릴리스에 의존하는 PostgreSQL RPM과 확장 기능 및 유틸리티를 제공합니다.
- Common repository: Non-common 저장소를 지원하는 SFCGAL, GEOS 등의 패키지나 PostgreSQL 버전에 독립적인 Patroni, pg_activity, PoWA, pgPool 등의 패키지를 제공합니다.
- Non-free repository: 소스는 공개되어 있지만 비자유 소프트웨어에 의존하거나 OSI 호환 라이선스가 아닌 패키지를 제공합니다.
- Extras repository: Patroni의 고가용성(HA) 환경을 지원하는 비-PostgreSQL 패키지나 Go로 작성된 경우처럼 일반적으로 배포하지 않는 PostgreSQL 패키지를 제공합니다.
현재 총 346개의 소프트웨어 패키지를 유지 관리하고 있으며, 앞으로도 더 많은 패키지가 추가될 예정입니다.
또한 이 저장소는 다양한 리눅스 배포판을 베타 단계부터 지원합니다. 이를 통해 업스트림 버전이 정식 출시(GA, General Availability)되는 날에 맞춰 패키지를 릴리스할 수 있습니다. 최근에는 RHEL 10의 GA 당일부터 지원했으며, Fedora 릴리스에도 같은 방식으로 대응하고 있습니다.
PostgreSQL 18 RPM 패키지의 새로운 기능
PostgreSQL 18 RPM 패키징에는 인증, 비동기 I/O, 하드웨어 인식 및 패키지 구성과 관련된 여러 변경 사항이 적용됩니다. 주요 기능과 개선 사항은 다음과 같습니다.
OAuth2 인증 지원과 라이브러리 패키지 분리
PostgreSQL 18의 가장 중요한 기능 중 하나는 OAuth2 인증입니다.
OAuth2 인증에 관한 자세한 내용은 다음 글에서 확인할 수 있습니다.
- PostgreSQL 18의 OAuth2 인증 미리보기 (1) – 작동 방식 탐구
- PostgreSQL 18의 OAuth2 인증 미리보기 (2) – Rust로 커스텀 OAuth2 검증기 만들기
- PostgreSQL 18의 OAuth2 인증 미리보기 (3) — PostgreSQL 클라이언트 라이브러리에 OAUTHBEARER 지원 추가
OAuth2 지원을 위해 RPM은 curl 지원을 포함해 빌드됩니다. 그러나 curl의 특성상 보안 문제가 우려될 수 있으므로 Debian 패키징 팀과 협력하여 OAuth2 공유 라이브러리를 별도 패키지인 postgresql18-libs-oauth로 분리했습니다. 일반 postgresql18-libs 패키지는 기존 릴리스와 동일하게 동작합니다.
io_uring 기반 비동기 I/O 지원
PostgreSQL 18은 Linux 서버에서 io_uring을 활용한 비동기 I/O를 지원하여 성능 향상을 제공합니다. 운영체제와 커널별 지원 범위는 다음과 같습니다.
- RHEL 8: 커널이 너무 오래되어 지원하지 않음
- RHEL 9.3:
kernel-5.14.0-362.8.1.el9_3에서 기술 프리뷰(tech preview)로 제공 - RHEL 10: 커널 6.12에서 정식 활용 가능
- SLES 15.7: 커널 6.4.0에 io_uring 지원 포함
NUMA 인식 기능
PostgreSQL 18은 NUMA 인식(NUMA awareness) 기능을 포함하며, RPM이 빌드되는 모든 운영체제에 완전히 적용됩니다.
ECPG 라이브러리와 개발 패키지 분리
ECPG(Embedded SQL in C, 임베디드 SQL 전처리기)는 24년 된 기능으로, C/C++ 코드 안에서 SQL 문을 작성할 수 있게 해줍니다. PostgreSQL 18에서는 ECPG 라이브러리를 별도 서브패키지인 postgresql18-ecpg-libs로 분리했습니다.
개발용 파일은 postgresql18-ecpg-devel 패키지로 제공됩니다. 이전에는 해당 파일이 -devel 서브패키지에 포함되어 있었습니다.
systemd-sysusers 통합
Fedora 43 릴리스의 변경 사항을 반영하여 이번 릴리스에는 systemd-sysusers와의 통합이 추가되었습니다.
결론
PostgreSQL 18 RPM 릴리스에는 OAuth2 공유 라이브러리 분리, io_uring 기반 비동기 I/O 지원, NUMA 인식, ECPG 서브패키지 분리 및 systemd-sysusers 통합이 포함됩니다. 개인적으로도 오랜만에 가장 흥미로운 릴리스라고 생각합니다. 🎉
PostgreSQL 18 RPM 관련 자주 묻는 질문
PGDG RPM 저장소란 무엇인가요?
PGDG RPM 저장소는 PostgreSQL RPM과 관련 확장 기능, 유틸리티 및 지원 라이브러리를 제공하는 커뮤니티 저장소입니다. PostgreSQL 버전에 따라 달라지는 패키지와 여러 버전에서 공통으로 사용할 수 있는 패키지를 구분해 관리합니다.
PGDG RPM 저장소는 어떻게 구성되나요?
저장소는 Non-common, Common, Non-free, Extras의 네 가지 주요 세트로 구성됩니다. 각 저장소는 PostgreSQL 버전 의존성, 라이선스 및 패키지 용도에 따라 구분됩니다.
PostgreSQL 18 RPM에서 OAuth2 패키지는 어떻게 변경되나요?
OAuth2 지원에 필요한 공유 라이브러리는 postgresql18-libs-oauth라는 별도 패키지로 분리됩니다. 일반 postgresql18-libs 패키지는 기존 릴리스와 동일하게 동작합니다.
PostgreSQL 18의 io_uring은 모든 Linux 환경에서 사용할 수 있나요?
아닙니다. 지원 여부는 운영체제와 커널 버전에 따라 다릅니다. 본문 기준으로 RHEL 8은 지원하지 않으며, RHEL 9.3에서는 기술 프리뷰로 제공되고 RHEL 10과 SLES 15.7에는 관련 지원이 포함됩니다.
PostgreSQL 18의 ECPG 패키지는 어떻게 분리되나요?
ECPG 라이브러리는 postgresql18-ecpg-libs로 분리됩니다. 개발용 파일은 postgresql18-ecpg-devel 패키지로 제공됩니다.