मुख्य सामग्री पर जाएँ

Java signal chaining

Glasswall लाइब्रेरी क्रैश होने से रोकने के लिए signal handling का उपयोग करती है, लेकिन जब Glasswall को Java से चलाया जाता है तो यह JVM में हस्तक्षेप कर सकता है। इसे सही तरीके से काम कराने के लिए signal chaining सेट अप करना होगा ताकि Glasswall में होने वाली त्रुटियाँ JVM तक न फैलें। सेट अप के दौरान आपको libjsig.so लाइब्रेरी का स्थान चाहिए होगा। यह आमतौर पर निम्न स्थानों पर मिल सकती है:

  • /usr/lib/jvm/jre/lib/libjsig.so
  • /usr/lib/jvm/jre/lib/amd64/libjsig.so
  • /usr/lib/jvm/java/lib/libjsig.so

यह आपके सिस्टम कॉन्फ़िगरेशन और Java कहाँ इंस्टॉल है, इस पर निर्भर करेगा। हमारे उदाहरणों में उपयोग किया गया path /usr/lib/jvm/java/lib/libjsig.so है।

सेट अप के बिना Signal chaining

कुछ पर्यावरणीय कारकों के कारण, यदि libjsig लाइब्रेरी सेट अप न हो तब भी Glasswall लाइब्रेरी बिना किसी समस्या के काम कर सकती है। इसकी गारंटी नहीं है, और हम दृढ़ता से अनुशंसा करते हैं कि सेट अप किया जाए।

Release 16.3 और उससे पहले

Release 16.3 और उससे पहले के releases के लिए आपको LD_PRELOAD environment variable को आपके libjsig.so लाइब्रेरी के स्थान की ओर point करने के लिए सेट अप करना होगा। अधिक जानकारी Signal Chaining पर मिल सकती है।

LD_PRELOAD का एक उदाहरण कुछ ऐसा दिख सकता है: export LD_PRELOAD=/usr/lib/jvm/java/lib/libjsig.so या आपकी Docker file में ENV LD_PRELOAD=/usr/lib/jvm/java/lib/libjsig.so। यह libjsig.so लाइब्रेरी के वास्तविक path पर निर्भर करेगा।

Release 16.4 और बाद के संस्करण

Release 16.4 और बाद के releases के लिए Editor लाइब्रेरी के Java wrapper की libjsig लाइब्रेरी पर सीधी dependency होती है। इसके लिए थोड़ा सा सेट अप आवश्यक है ताकि linker लाइब्रेरी को ढूँढ सके और dependency को resolve कर सके। लाइब्रेरी के स्थान के अनुसार paths बदलेंगे। सेट अप के कुछ उदाहरण नीचे दस्तावेज़ित हैं:

आपके सिस्टम के अनुसार /usr/lib या /usr/lib64 में एक symbolic link बनाया जा सकता है, जो libjsig लाइब्रेरी की ओर point करे।

उदाहरण के लिए, admin access के साथ terminal में निम्न commands चलाएँ:

ln -s -T /usr/lib/jvm/java/lib/libjsig.so /usr/lib64/libjsig.so
ldconfig

ln symbolic link बनाएगा और ldconfig library cache को अपडेट करेगा ताकि dependency को resolve किया जा सके।

उदाहरण 2 - LD_LIBRARY_PATH environment variable का उपयोग करना

LD_LIBRARY_PATH environment variable को libjsig library वाली directory की ओर point करने के लिए set किया जा सकता है।

उदाहरण के लिए, setup कुछ ऐसा दिख सकता है: export LD_LIBRARY_PATH=/usr/lib/jvm/java/lib या आपकी Docker file में ENV LD_LIBRARY_PATH=/usr/lib/jvm/java/lib

इसके बाद directory के भीतर की सभी libraries linker के लिए उपलब्ध होंगी।

उदाहरण 3 - /etc/ld.so.conf.d/ में नया configuration

/etc/ld.so.conf.d में एक नया configuration बनाया जा सकता है, जिसमें libjsig library की directory शामिल होगी।

उदाहरण के लिए, admin access के साथ terminal में निम्न commands चलाएँ:

echo "/usr/lib/jvm/java/lib/" | tee -a /etc/ld.so.conf.d/jvm.conf
ldconfig

पहला command /usr/lib/jvm/java/lib/ content के साथ configuration file बनाता है। जब ldconfig command चलाया जाता है, तो library cache अपडेट होकर config file में निर्दिष्ट directory की सभी libraries को शामिल कर लेगा।