ServBay में PostgreSQL मॉड्यूल कैसे संकलित करें
जब आप ServBay स्थानीय वेब विकास परिवेश में PostgreSQL विकास कर रहे हों, तब आपको अतिरिक्त PostgreSQL मॉड्यूल (जिसे एक्सटेंशन भी कहते हैं) संकलित और इंस्टॉल करने की आवश्यकता पड़ सकती है ताकि डाटाबेस की सुविधाओं को बढ़ाया जा सके। ये मॉड्यूल नए डेटा प्रकार, फंक्शन, ऑपरेटर, इंडेक्स एक्सेस मेथड आदि प्रदान कर सकते हैं।
यह लेख विस्तार से बताएगा कि आप ServBay पर्यावरण में PostgreSQL मॉड्यूल को कैसे संकलित एवं स्थापित कर सकते हैं, इसमें लोकप्रिय मॉड्यूल postgis (जियो-इन्फॉर्मेशन सिस्टम सपोर्ट) और pg_jieba (चीनी वर्ड सेगमेंटेशन) के उदाहरण शामिल हैं।
अवलोकन
ServBay एक लचीला एवं समृद्ध विकास परिवेश है जो डेवलपर्स को अपने इन-बिल्ट सॉफ़्टवेयर पैकेज पर आधारित अतिरिक्त घटकों का कस्टम डवलपमेंट या संकलन करने की आज़ादी देता है। PostgreSQL मॉड्यूल को संकलित करने की प्रक्रिया में सामान्यतः मॉड्यूल का सोर्स कोड डाउनलोड करना, बिल्ड विकल्प सेट करना, संबंधित टूल्स (make या cmake) से संकलन-इंस्टॉल करना तथा अन्त में PostgreSQL डाटाबेस में उस मॉड्यूल को सक्रिय करना शामिल है।
सफलता की कुंजी है - संकलन पर्यावरण का सही कॉन्फ़िगरेशन ताकि ServBay में उपलब्ध PostgreSQL वर्शन के हेडर और लाइब्रेरी फाइल्स तथा डिपेंडेंसीज़ सही तरीके से मिल सकें।
पूर्वआवश्यकताएँ
किसी भी PostgreSQL मॉड्यूल को संकलित करने से पहले, ज़रूरी है कि आप ServBay की आवश्यकता अनुसार संकलन पर्यावरण को चालू करें। यह कदम अवश्य लें क्योंकि इससे आवश्यक टूलचेन (कंपाइलर, लिंकर्स आदि), एन्वायरनमेंट वेरिएबल्स (जैसे $PATH, $CFLAGS, $LDFLAGS आदि) और ServBay-केंद्रित बिल्ड कॉन्फ़िगरेशन पाथ सेट होते हैं।
संकलन पर्यावरण को सही तरह से इनिशियलाइज़ करने के लिये, कृपया ServBay के आधिकारिक डाक्यूमेंटेशन का ServBay के साथ सेकेंडरी कम्पाइलिंग अनुभाग पढ़ें। सुनिश्चित करें कि आपने उसमें बताए गए पर्यावरण तैयारी कार्य पूरे कर लिए हैं, जो सामान्यतः ServBay टर्मिनल में एक विशेष स्क्रिप्ट चलाकर पूरा होता है।
PostgreSQL वर्शन के चयन का महत्व
ServBay आपको कई PostgreSQL वर्शन इन्स्टॉल और चला सकता है। क्योंकि मॉड्यूल के संकलन और क्रियान्वयन विशेष वर्शन से जुड़े होते हैं (विशेषकर वर्शन-विशिष्ट हेडर, लाइब्रेरी या इंटर्नल API), इसलिए संकलन टूल इस्तेमाल करते हुए आपको हमेशा ठीक उसी PostgreSQL वर्शन और उसकी पथ-संरचना को स्पष्टता से बताना चाहिए, जिसके लिए आप मॉड्यूल बना रहे हैं।
सही वर्शन पथ का चयन करने से संकलन सही डिपेंडेंसीज़ लेता है और वांछित PostgreSQL वर्शन के अनुकूल मॉड्यूल बनाता है, जिससे संभावित संकलन त्रुटि, लोड असफलता या रन-टाइम समस्याओं से बचा जा सकता है।
इस गाइड में हम उदाहरण के तौर पर ServBay में "PostgreSQL 15" वर्शन (15.7) लेंगे। कृपया अपने मौजूदा PostgreSQL वर्शन के अनुसार पथ समायोजित करें।
ServBay पर्यावरण वेरिएबल्स और pg_config टूल की सहायता से आपको सही पथ बताता है। ${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/pg_config एक अत्यंत उपयोगी टूल है, जिसे PostgreSQL अपने साथ लाता है और यह इंस्टॉलेशन पाथ, कंपाइलिंग कॉन्फ़िग, लाइब्रेरी तथा हेडर फोल्डर आदि की जानकारी देता है। बाहरी मॉड्यूल संकलित करते समय, pg_config प्रमुख भूमिका निभाता है।
postgis मॉड्यूल संकलन करना
postgis मॉड्यूल PostgreSQL के सबसे लोकप्रिय और शक्तिशाली एक्सटेंशनों में से एक है। यह जियोग्राफिकल डेटा ऑब्जेक्ट्स तथा फंक्शन की सुविधा जोड़ता है, जिससे स्थान-आधारित डेटा का भंडारण, क्वेरी और विश्लेषण संभव होता है। चलिए postgis-3.4.2 मॉड्यूल के संकलन की विस्तारपूर्वक प्रक्रिया देखें:
चरण 1: सोर्स कोड डाउनलोड करना
सबसे पहले, PostGIS की आधिकारिक वेबसाइट से postgis-3.4.2 का सोर्स कोड पैकेज डाउनलोड करें। यह पक्का करें कि आप सोर्स कोड वर्शन (आम तौर पर .tar.gz या .zip) ही लें।
bash
wget https://download.osgeo.org/postgis/source/postgis-3.4.2.tar.gz1
wget एक सामान्य CLI टूल है जिससे आप दी गई URL से फ़ाइल डाउनलोड कर सकते हैं।
चरण 2: सोर्स पैकेज अनज़िप करना
डाउनलोड किए गए पैकेज को एक्सट्रैक्ट करें और एक्सट्रैक्शन के बाद के डायरेक्टरी में जाएँ।
bash
tar zxvf postgis-3.4.2.tar.gz
cd postgis-3.4.21
2
2
tar zxvf कमांड .tar.gz पैकेज को खोलने के लिए है। cd से आप उस जड़ डायरेक्टरी में चले जाएँगे।
चरण 3: संकलन विकल्प सेट करना
PostGIS GNU Autotools पर बिल्ड होता है। इस चरण में सिस्टम डिपेंडेंसीज़, संकलन फीचर्स की जाँच तथा Makefile जनरेट होते हैं। आपको सही PostgreSQL पाथ व अन्य लाइब्रेरी पथ पैरामीटर द्वारा बताना है।
bash
./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"1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
./configure: कॉन्फ़िगरेशन स्क्रिप्ट को चलाएँ।--prefix,--bindir,--datarootdir: इंस्टॉलेशन पथ को ServBay के PostgreSQL वर्शन फोल्डर में सेट करें। इससे PostgreSQL अपनी डिफ़ॉल्ट सर्च-पथ में मॉड्यूल पा सकता है।${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7ServBay में PostgreSQL 15.7 की रूट डायरेक्टरी है, जिसे संकलन पर्यावरण आरंभ करने वाली स्क्रिप्ट सेट करती है।--with-protobufdir: Protobuf लाइब्रेरी का पथ।${SERVBAY_BIN_PATH}ServBay का बाइनरी फोल्डर है।--disable-nls: नेशनल लैंग्वेज सपोर्ट को डिसेबल करें (डेवलपमेंट के लिए पर्याप्त)।--without-raster,--without-topology: PostGIS के Raster और Topology सपोर्ट को हटाएँ। आवश्यकतानुसार इन्हें सक्षम कर सकते हैं, जिससे अतिरिक्त डिपेंडेंसीज़ आ सकती हैं।--with-pgconfig: मुख्य विकल्प: यहाँ वहpg_configतय करें जो चयनित PostgreSQL वर्शन के लिए हो। इससे कॉन्फ़िगरेशन स्क्रिप्ट को सभी आवश्यक path मिलते हैं।CFLAGS,CXXFLAGS,LDFLAGS: यह C/C++ कम्पाइलर और लिंकर्स को अतिरिक्त फ्लैग्स देने के लिए हैं।${CFLAGS},${CXXFLAGS},${LDFLAGS}में ServBay डिफ़ॉल्ट जैसे सेटिंग्स होती हैं।-I${SERVBAY_COMMON_INCLUDE_PATH}/libxml2 -I${SERVBAY_COMMON_INCLUDE_PATH}: ये इनक्लूड path हैं ताकि Libxml2 जैसे लाइब्रेरी हैडर मिल सकें।-L${SERVBAY_COMMON_LIB_PATH} -lxml2 -lz ...: ये सामान्य लाइब्रेरी पथ और पोस्टगिस की डिपेंडेंसी लाइब्रेरी जोड़ते हैं।-std=c++17: C++17 स्टैंडर्ड सेट करता है; कई नये प्रोजेक्ट्स में आवश्यक।
चरण 4: संकलित करें और इंस्टॉल करें
एक बार सफलतापूर्वक कॉन्फ़िगर हो जाने पर, make से संकलन शुरू करें और make install से इंस्टॉलेशन करें।
bash
make -j ${CPU_NUMBER}
make install1
2
2
make -j ${CPU_NUMBER}: संकलन प्रारंभ करें।-j ${CPU_NUMBER}अधिकतम कोर का प्रचालन करता है।make install: संकलित मॉड्यूल PostgreSQL के सही फोल्डर (जैसेlib/postgresqlऔरshare/postgresql/extension) में कॉपी करता है।
चरण 5: मॉड्यूल लोडिंग वेरीफाई करें
इंस्टॉलेशन के बाद PostgreSQL डाटाबेस में postgis एक्सटेंशन सक्षम करें। ServBay के टर्मिनल या अपने पंसदीदा क्लाइंट से कनेक्शन बनाकर ये SQL कमांड चलाएँ।
ServBay की टर्मिनल में psql टूल चला कर वेरिफ़ाई करें (सुनिश्चित करें कि ServBay पर्यावरण चालू हो):
bash
# CREATE EXTENSION से PostGIS सक्षम करें
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION postgis;"1
2
2
सफल होने पर PostGIS एक्सटेंशन सक्रिय हो जाएगा। वर्शन जांचने के लिए:
bash
# PostGIS वर्शन देखें
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT PostGIS_Version();"1
2
2
यदि आउटपुट में वर्शन दिखे, तो मॉड्यूल सही प्रकार से संकलित, इंस्टॉल और लोड हो गया है।
pg_jieba मॉड्यूल संकलन करना
pg_jieba एक PostgreSQL एक्सटेंशन है, जो C++ की cppjieba लाइब्रेरी पर आधारित है एवं उत्प्रेरित चीनी वर्ड सेगमेंटेशन की सुविधा देता है। यह CMake बिल्ड सिस्टम का उपयोग करता है। इसके संकलन के मुख्य चरण ये हैं:
चरण 1: सोर्स कोड प्राप्त करें
GitHub से pg_jieba का सोर्स कोड क्लोन करें। इसमें cppjieba Git सबमॉड्यूल भी शामिल है, अतः उसे भी इनिशियलाइज़ व अपडेट करें।
bash
git clone https://github.com/jaiminpan/pg_jieba.git
cd pg_jieba
git submodule update --init --recursive1
2
3
2
3
git clone ...: रेपो क्लोन करता है।git submodule update --init --recursive: सभी Git सबमॉड्यूल्स, जैसेcppjieba, के सोर्स कोड लाता है।
चरण 2: CMake विकल्प सेट करें
pg_jieba CMake पर आधारित है। इसमें PostgreSQL इंस्टॉल पथ और ServBay पर्यावरण की मेटाडेटा पैरामीटर दें।
bash
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}1
2
3
4
2
3
4
cmake -S . -B builddir: बिल्ड डायरेक्टरी बनाएँ।-DCMAKE_PREFIX_PATH: आवश्यक, सही डिपेंडेंसी/हेडर और लाइब्रेरी के लिए PostgreSQL पथ सेट करें।-DCMAKE_OSX_DEPLOYMENT_TARGET: macOS का न्यूनतम टारगेट वर्शन।-DCMAKE_OSX_ARCHITECTURES: CPU आर्किटेक्चर (x86_64,arm64आदि); ServBay पर्यावरण से ली गई।
चरण 3: CMake से संकलित करें और इंस्टॉल करें
एक बार कॉन्फ़िगरेशन सफल हो जाए, तो CMake के बिल्ड एवं इंस्टॉल कमांड चलाएँ:
bash
cmake --build builddir -j ${CPU_NUMBER}
cmake --install builddir1
2
2
cmake --build builddir: कोड संकलन।-j ${CPU_NUMBER}: बहु-कोर संकलन।cmake --install builddir: इंस्टॉलेशन प्रॉसेस; सभी इंस्टॉल फाइल्स PostgreSQL डायरेक्टरी में जाएंगी।
चरण 4: मॉड्यूल लोडिंग की पुष्टि करें
संस्थापन पूर्ण होने के बाद, PostgreSQL में pg_jieba एक्सटेंशन सक्षम करें।
ServBay टर्मिनल में यह चलाएँ:
bash
# CREATE EXTENSION से pg_jieba सक्षम करें
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "CREATE EXTENSION pg_jieba;"1
2
2
सफल होने पर, आप उपलब्ध एक्सटेंशनों की सूची से पुष्टि कर सकते हैं:
bash
# इंस्टॉल्ड एक्सटेंशन सूची देखें
${SERVBAY_PACKAGE_FULL_PATH}/postgresql/15/15.7/bin/psql -c "SELECT * FROM pg_available_extensions WHERE name = 'pg_jieba';"1
2
2
यदि सूची में नाम दिखे, तो मॉड्यूल सफलतापूर्वक संकलित, इंस्टॉल एवं चालू है।
सामान्य प्रश्न (FAQ)
- संकलन असफल, हेडर या लाइब्रेरी फ़ाइल नहीं मिली?
- जाँचें क्या आपने ServBay का संकलन पर्यावरण इनिशियलाइज़ किया है। सही टर्मिनल या स्क्रिप्ट से सभी वांछित एन्वायरनमेंट वेरिएबल्स (
$CFLAGS,$LDFLAGS,${SERVBAY_COMMON_INCLUDE_PATH},${SERVBAY_COMMON_LIB_PATH}आदि) सेट हैं। - Autotools में
--with-pgconfigया CMake में-DCMAKE_PREFIX_PATHसही PostgreSQL वर्शन/पथ देखें और वहpg_configमौज़ूद व चलने योग्य हो। - कुछ मॉड्यूल ServBay की डिफ़ॉल्ट लाइब्रेरी से भिन्न अतिरिक्त डिपेंडेंसी (जैसे Raster विकल्प सक्षम करने पर PostGIS के लिये GEOS, GDAL आदि) चाह सकते हैं। यदि डिपेंडेंसी नहीं मिले, तो या तो उसे इंस्टॉल करें या विकल्प को अक्षम करें।
- जाँचें क्या आपने ServBay का संकलन पर्यावरण इनिशियलाइज़ किया है। सही टर्मिनल या स्क्रिप्ट से सभी वांछित एन्वायरनमेंट वेरिएबल्स (
CREATE EXTENSIONअसफल, मॉड्यूल फाइल नहीं मिली?- जाँचें क्या
make install(Autotools) याcmake --install(CMake) सही से हुआ है; त्रुटि संदेश देखें। - इंश्योर करें कि इंस्टॉलेशन पथ (Autotools में
--prefix, CMake में-DCMAKE_PREFIX_PATH) सचमुच वही है, जिसमें आप मॉड्यूल इंस्टॉल करना चाहते हैं। - जरुरत हो तो PostgreSQL सेवा को पुनः प्रारंभ करें, जिससे नए मॉड्यूल पहचाने जा सकें।
- अधिकांश साधारण एक्सटेंशनों के लिये
shared_preload_librariesकी आवश्यकता नहीं है, पर कुछ आंतरिक मॉड्यूल के लिये इसकी ज़रूरत हो सकती है; उसकी डाक्यूमेंटेशन देखें।
- जाँचें क्या
- विभिन्न PostgreSQL वर्शन के लिए मॉड्यूल संकलित कैसे करें?
- वही चरण दोहराएँ, पर हमेशा संकलन के समय
--with-pgconfig(Autotools) या-DCMAKE_PREFIX_PATH(CMake) में लक्ष्य PostgreSQL वर्शन का सही पथ वpg_configफ़ाइल दें। उदाहरण के लिए PostgreSQL 14 हेतु:${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x/bin/pg_configया${SERVBAY_PACKAGE_FULL_PATH}/postgresql/14/14.x(जहाँ14.xवर्शन नंबर है)।
- वही चरण दोहराएँ, पर हमेशा संकलन के समय
सारांश
इन चरणों का पालन करके, और ServBay के उपलब्ध संकलन वातावरण एवं टूल्स का पूरा लाभ उठाकर, आप अपने लोकल डेवेलपमेंट आयाम में आवश्यक PostgreSQL मॉड्यूल्स को सफलतापूर्वक संकलित और इंस्टॉल कर सकते हैं। सही संकलन पर्यावरण सेट करना, लक्ष्य PostgreSQL वर्शन स्पष्ट रूप से बताना और संकलन/इंस्टॉल पथ जाँचना - ये सफलता के मुख्य सूत्र हैं।
आशा है कि यह लेख आपको ServBay में अपने PostgreSQL वातावरण को कस्टमाइज़ करने में सहायक होगा। यदि आपको अतिरिक्त सहायता चाहिए, तो कृपया ServBay की अन्य डाक्यूमेंटेशन या समुदाय संसाधनों की मदद लें।
