ServBay'de PostgreSQL Modülü Nasıl Derlenir
ServBay yerel web geliştirme ortamında PostgreSQL ile çalışırken, veritabanınızın işlevselliğini geliştirmek veya genişletmek için ek PostgreSQL modülleri (uzantılar) derleyip yüklemeniz gerekebilir. Bu modüller sayesinde yeni veri türleri, fonksiyonlar, operatörler, indeks erişim yöntemleri gibi pek çok özellik ekleyebilirsiniz.
Bu makalede, ServBay ortamında PostgreSQL modüllerinin derlenip yüklenmesi adım adım gösterilecek ve PostGIS (coğrafi bilgi sistemi desteği) ile pg_jieba (Çince kelime ayrıştırma) modüllerinin derleme örnekleri paylaşılacaktır.
Genel Bakış
ServBay, entegre yazılım paketleri üzerine ek geliştirme yapabileceğiniz veya ilave bileşenleri derleyebileceğiniz esnek ve kapsamlı bir ortam sunar. PostgreSQL modülü derleme işlemleri genellikle modülün kaynak kodunu indirip, derleme seçeneklerini yapılandırmayı, ilgili derleyici araçları (örn. make
ya da cmake
) kullanarak derlemeyi ve son olarak uzantıyı PostgreSQL veritabanında etkinleştirmeyi içerir.
Başarılı olmanın anahtarı, doğru derleme ortamı yapılandırmasını sağlayıp, ServBay’de kullandığınız PostgreSQL sürümüne ait başlık dosyalarını, kütüphaneleri ve bağımlılıkları bulabilmektir.
Ön Koşullar
Herhangi bir PostgreSQL modülü derlemeye başlamadan önce, mutlaka ServBay'in belirlediği şekilde derleme ortamını başlatmanız gerekir. Bu adım, derleme için gerekli araç zincirini (derleyici, bağlayıcı vb.), ortam değişkenlerini ($PATH
, $CFLAGS
, $LDFLAGS
gibi) ve ServBay'e özgü derleme yapılandırma yollarını ayarlamak için zorunludur.
Derleme ortamının nasıl başlatılacağına dair adımları detaylarıyla ServBay ile Yeniden Derleme başlıklı resmi ServBay dokümanında bulabilirsiniz. Orada anlatılan ortam hazırlığı tamamlanmadan aşağıdaki işlemleri gerçekleştirmeyiniz; genellikle ServBay terminalinde özel bir ortam başlatma betiği çalıştırmanız gerekir.
PostgreSQL Sürümünü Belirtmenin Önemi
ServBay, birden fazla PostgreSQL yazılım paketinin kurulmasına ve çalıştırılmasına olanak tanır. PostgreSQL modüllerinin hem derlemesi hem de çalıştırılması; ilgili veritabanı sürümüne (örneğin, o sürüme ait başlık dosyaları, kütüphaneler ve dahili API’ler) yakından bağlıdır. Bu nedenle, derleme araçlarını kullanırken modülü hangi PostgreSQL sürümü için derleyeceğinizi net olarak belirtmeli ve ilgili konfigürasyon yolunu doğru ayarlamalısınız.
Doğru PostgreSQL sürüm yolunun seçilmesi, derleyicinin doğru bağımlılıkları bulmasını ve üretilen modül dosyalarının hedef PostgreSQL sürümüyle tam uyumlu olmasını sağlar; böylece derleme hataları, yükleme başarısızlıkları veya çalışma zamanı sorunlarıyla karşılaşmazsınız.
Bu örnekte ServBay'de kurulu olan PostgreSQL 15
sürümü (ör. sürüm numarası 15.7
) kullanılacaktır. Kullandığınız sürüme göre dizin yolunu uygun şekilde değiştiriniz.
ServBay; ortam değişkenleri ve pg_config
aracı ile doğru yolu bulmanıza yardımcı olur. ${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config
, PostgreSQL’in kendi programı olup, belirli bir sürümün kurulum yolu, derleme ayarları, kütüphane ve başlık dosyası yolları gibi tüm önemli bilgileri sağlar. Dış modül derlemede, pg_config
doğru bağımlılıkların tanımlanması için kritik öneme sahiptir.
postgis Modülünü Derleme
postgis
modülü, PostgreSQL’in en popüler ve güçlü uzantılarındandır ve PostgreSQL’e Coğrafi Bilgi Sistemi (GIS) nesneleriyle fonksiyon desteği ekler; bu da mekânsal verilerin depolanmasını, sorgulanmasını ve analiz edilmesini sağlar. postgis-3.4.2
sürümünü derleme adımları şunlardır:
Adım 1: Kaynak Kodunu İndirme
İlk olarak, PostGIS’in resmi internet sitesinden postgis-3.4.2
kaynak kod paketini indirin. Kaynak kod formatında bir arşiv (.tar.gz veya .zip) tercih edin.
wget https://download.osgeo.org/postgis/source/postgis-3.4.2.tar.gz
wget
, komut satırında dosya indirmek için sıkça kullanılan bir araçtır.
Adım 2: Kaynak Paketi Çıkarma
İndirilen postgis-3.4.2.tar.gz
paketini bulunduğunuz dizine çıkarın ve ardından kaynak kodu içeren dizine girin.
tar zxvf postgis-3.4.2.tar.gz
cd postgis-3.4.2
2
tar zxvf
komutu, .tar.gz
uzantılı sıkıştırılmış dosyaları açmak için kullanılır. cd
, çalışma dizininizi açılan postgis-3.4.2
dizinine geçmenizi sağlar.
Adım 3: Derleme Seçeneklerini Yapılandırma
PostGIS, yapı sistemi olarak GNU Autotools kullanır. Bu adımda, sistem bağımlılıklarını denetleyen ve derleme özelliklerini belirleyen yapılandırma işlemi yapılır, ardından bir Makefile
oluşturulur. Burada, ServBay’deki ilgili PostgreSQL sürümünün kurulu olduğu yolu ve gerekli kütüphane yollarını seçenek olarak giriyoruz.
./configure \
--prefix=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 \
--bindir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin \
--datarootdir=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/share \
--with-protobufdir=${SERVBAY_BIN_PATH} \
--disable-nls \
--without-raster \
--without-topology \
--with-pgconfig=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config \
CFLAGS="${CFLAGS} -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" \
CXXFLAGS="${CXXFLAGS} -std=c++17 -I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}" \
LDFLAGS="${LDFLAGS} -L${SERVBAY_COMMON_LIB_PATH} -lxml2 -lz -lpthread -liconv -licui18n -licuuc -licudata -lm"
2
3
4
5
6
7
8
9
10
11
12
./configure
: Yapılandırma betiğini çalıştırır.--prefix
,--bindir
,--datarootdir
: PostGIS dosyalarının ServBay üzerindeki belirli PostgreSQL sürümünün dizinlerine kurulmasını sağlar.${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7
yolu, ServBay’deki PostgreSQL 15.7 ana kurulum dizinidir ve genellikle ortam başlatma betiği tarafından tanımlanır.--with-protobufdir
: PostGIS’in ihtiyaç duyabileceği Protobuf kütüphane yolunu belirler.${SERVBAY_BIN_PATH}
, ServBay’in ikili dosya yoludur.--disable-nls
: Yerel dil desteğini devre dışı bırakır; geliştirme ortamında genellikle gerekli değildir.--without-raster
,--without-topology
: Derlemeyi basitleştirmek için PostGIS’in Raster ve Topology desteğini kapatır. İsterseniz ekleyebilirsiniz, ancak ek kütüphaneler gerekebilir.--with-pgconfig
: En önemli seçenek, derlemede hangi PostgreSQL sürümününpg_config
aracının kullanılacağını belirtir. Bu araç, başlık ve kütüphane yolları dahil olmak üzere PostgreSQL sürümüyle ilgili tüm gerekli bilgileri sağlar.CFLAGS
,CXXFLAGS
,LDFLAGS
: Derleyicilere ve bağlayıcılara ek parametreleri aktaran standart ortam değişkenleridir.${CFLAGS}
,${CXXFLAGS}
ve${LDFLAGS}
ortam başlatma aşamasında tanımlanan değerleri korur.-I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}
: Derleyicinin libxml2 gibi başlık dosyalarını bulmasını sağlar.-L${SERVBAY_COMMON_LIB_PATH} -lxml2 -lz ...
: Gerekli ServBay ortak kütüphane yolunu ve dosyalarını ekler (örn. libxml2, zlib, pthread, iconv, icu vb.).-std=c++17
: C++ derleyicisi için modern standart belirtir.
Adım 4: Derleme ve Kurulum
Yapılandırma işlemi tamamlandıktan sonra, make
komutu ile kaynak kodunu derleyip make install
ile modül dosyalarını ilgili PostgreSQL dizinine kurun.
make -j ${CPU_NUMBER}
make install
2
make -j ${CPU_NUMBER}
: Derleme işlemini başlatır.-j ${CPU_NUMBER}
ile, çok çekirdekli işlemcilerde işlemler paralel yürütülür ve daha hızlı tamamlanır.make install
: Derlenen dosyalar ServBay’in PostgreSQL 15.7 kurulum dizini altındaki uygun yerlere (genelliklelib/postgresql
,share/postgresql/extension
) kopyalanır.
Adım 5: Modül Yüklemesini Doğrulama
Derleme ve kurulum tamamlandıktan sonra, veritabanında postgis
uzantısını etkinleştirmeniz gerekir. ServBay’in sunduğu komut satırı ya da tercih ettiğiniz bir istemci aracılığıyla veritabanınıza bağlanarak aşağıdaki SQL komutlarını çalıştırın.
Doğrulama için ServBay ortamındaki psql
komut satırı aracını kullanın; doğru ortam değişkenlerinin yüklü olduğundan emin olun.
# PostGIS'i aktive etmek için CREATE EXTENSION komutu
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION postgis;"
2
Başarıyla çalışırsa, PostGIS uzantısı veritabanınıza eklenmiş olur. Sürüm bilgisini doğrulamak için:
# PostGIS sürümünü sorgulama
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT PostGIS_Version();"
2
Her şey doğruysa, PostGIS’in sürümünü belirten bir çıktı almalısınız; bu da modülün başarıyla derlenip, kurulup, etkinleştirildiğini gösterir.
pg_jieba Modülünü Derleme
pg_jieba
, PostgreSQL’de Çince kelime ayrıştırmasını mümkün kılan, C++ tabanlı cppjieba
kütüphanesine dayalı bir uzantıdır ve genellikle tam metin aramalarda kullanılır. pg_jieba
, derleme için CMake sistemi kullanır. Kurulum adımları şöyledir:
Adım 1: Kaynak Kodunu Getirme
Öncelikle GitHub üzerinden pg_jieba
modülünün kaynak kodunu indirin. Bu modül, alt modül (submodule) olarak cppjieba
'ya bağlı olduğundan, onu da indirmeniz gerekir.
git clone https://github.com/jaiminpan/pg_jieba.git
cd pg_jieba
git submodule update --init --recursive
2
3
git clone ...
:pg_jieba
deposunu bulunduğunuz dizine indirir.git submodule update --init --recursive
: Tüm gerekli alt modülleri ve onların içeriklerini indirir.
Adım 2: Derleme Seçeneklerinin Yapılandırması (CMake)
pg_jieba
, CMake yapı sistemini kullanır. Tıpkı Autotools’daki ./configure
gibi, CMake ile derleme dosyaları ve bağımlılıklar hazırlanır. PostgreSQL kurulum yolu ve ServBay’e özgü parametreler girilir.
cmake -S . -B builddir \
-DCMAKE_PREFIX_PATH=${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7 \
-DCMAKE_OSX_DEPLOYMENT_TARGET=${BUILD_OS_MIN_VERSION} \
-DCMAKE_OSX_ARCHITECTURES=${BUILD_CPU_ARCH_CMAKE}
2
3
4
cmake -S . -B builddir
: Kök kaynak dizinindenbuilddir
adlı derleme dizini oluşturur ve yapılandırmayı başlatır.-DCMAKE_PREFIX_PATH
: PostgreSQL’in ve başka kütüphanelerin bulunacağı yolu tanımlar; burada ServBay’in PostgreSQL 15.7 kök yolu girilir.-DCMAKE_OSX_DEPLOYMENT_TARGET
: Derlenen dosyanın uyumlu olacağı macOS minimum sürümlü sistem.-DCMAKE_OSX_ARCHITECTURES
: Hangi CPU mimarisi için derleneceğini belirler (x86_64
veyaarm64
gibi).
Adım 3: Derleme ve Kurulum (CMake)
Başarılı bir şekilde yapılandırıldıktan sonra, derleme ve kurulum işlemleri yapılır.
cmake --build builddir -j ${CPU_NUMBER}
cmake --install builddir
2
cmake --build builddir
: Belirtilen dizinde derlemeyi başlatır.-j ${CPU_NUMBER}
: Çok çekirdekli derlemeyi hızlandırır.cmake --install builddir
: Derlenen dosyaları doğru PostgreSQL kurulum dizinine kopyalar.
Adım 4: Modül Yüklemesini Doğrulama
Derleme ve kurulum bittikten sonra, PostgreSQL veritabanında pg_jieba
uzantısını etkinleştirmeniz gerekir. Aşağıdaki SQL komutunu çalıştırarak etkinleştirebilir ve doğrulama yapabilirsiniz.
ServBay terminalinde olun ve çevresel değişkenlerin doğru olduğundan emin olun.
# pg_jieba uzantısını etkinleştirme
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION pg_jieba;"
2
Başarıyla gerçekleşirse, pg_jieba
uzantısı kurulmuş olur. Şu komutla uzantının kurulu olduğunu teyit edebilirsiniz:
# Kurulu uzantı listesini sorgulama
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT * FROM pg_available_extensions WHERE name = 'pg_jieba';"
2
Uzantı listede görünüyorsa, derleme, kurulum ve etkinleştirme işlemleriniz başarıyla tamamlanmıştır.
Sık Sorulan Sorular (SSS)
- Derleme başarısız, başlık dosyası veya kütüphane bulunamıyor hatası alıyorum?
- ServBay derleme ortamını doğru biçimde başlatıp başlatmadığınızı kontrol edin. Terminalde ortam başlatma betiğini çalıştırdığınızdan ve tüm ilgili ortam değişkenlerinin (
$CFLAGS
,$LDFLAGS
,${SERVBAY_COMMON_INCLUDE_PATH}
,${SERVBAY_COMMON_LIB_PATH}
vb.) doğru şekilde ServBay dizinlerini gösterdiğinden emin olun. - Yapılandırma komutlarında kullandığınız
--with-pgconfig
(Autotools için) veya-DCMAKE_PREFIX_PATH
(CMake için) parametrelerinin doğru PostgreSQL sürüm yoluna işaret ettiğinden ve o dizindepg_config
dosyasının bulunduğundan emin olun. - Bazı modüller ServBay’in sunduğu kütüphanelerden başka ek sistem bağımlılıklarına gereksinim duyabilir (ör. PostGIS’in Raster/Topology özellikleri aktifse GEOS, GDAL vb.). ServBay ortamında bazı kütüphaneler mevcut olsa da, ek gereklilikler için manuel kurulum yapabilir ya da ilgili derleme özelliklerini devre dışı bırakabilirsiniz.
- ServBay derleme ortamını doğru biçimde başlatıp başlatmadığınızı kontrol edin. Terminalde ortam başlatma betiğini çalıştırdığınızdan ve tüm ilgili ortam değişkenlerinin (
CREATE EXTENSION
başarısız ve modül dosyası bulunamıyor hatası alıyorum?make install
(Autotools) veyacmake --install
(CMake) gibi kurulum komutlarının başarıyla tamamlandığından emin olun. Kurulum loglarında bir hata olup olmadığını kontrol edin.- Konfigürasyon aşamasında belirtilen
--prefix
(Autotools) veya-DCMAKE_PREFIX_PATH
(CMake) dizininin, modülü kurmak istediğiniz doğru ServBay PostgreSQL yolunu gösterdiğinden emin olun. Dosyalar genellikle bu yoldakilib/postgresql
alt dizinine kurulur. - PostgreSQL servisini yeniden başlatmayı deneyin. Bazen yeni modül dosyalarının tanınması için veritabanının yeniden başlatılması gerekir. ServBay arayüzünden bu işlemi kolayca yapabilirsiniz.
- PostgreSQL’in
shared_preload_libraries
ayarını kontrol edin. Çoğu uzantı için buna gerek olmasa da, bazı modüllerin dosya adı burada tanımlanmalı ve veritabanı başlarken yüklenmelidir. Derlediğiniz modülün belgelerine bakınız.
- Farklı bir PostgreSQL sürümüne modül derlemek için ne yapmalıyım?
- Aynı adımları izleyin; ancak yapılandırma komutunda (
./configure
ya dacmake
)--with-pgconfig
(Autotools) veya-DCMAKE_PREFIX_PATH
(CMake) parametresini hedeflediğiniz PostgreSQL sürümününpg_config
yoluna göre ayarlayın. Örneğin, PostgreSQL 14 için yol şöyle değişir:${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x/bin/pg_config
veya${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x
.
- Aynı adımları izleyin; ancak yapılandırma komutunda (
Sonuç
Yukarıdaki adımlar sayesinde, ServBay’in sunduğu derleme ortamı ve araçlarını kullanıp, yerel geliştirme ortamınızda ihtiyacınız olan PostgreSQL modüllerini başarıyla derleyip yükleyebilirsiniz. Doğru ServBay derleme ortamının başlatılması, hedef PostgreSQL sürümünün net bir şekilde belirtilmesi ve derleme ile kurulum yollarının dikkatlice kontrolü başarıya ulaşmanın temel anahtarlarıdır.
Umarız bu makale, ServBay’de PostgreSQL ortamınızı ihtiyacınıza göre özelleştirmeniz için faydalı olur. Farklı bir sorunla karşılaşırsanız, ServBay’in diğer dökümantasyonlarına veya topluluk kaynaklarına başvurabilirsiniz.