주요 콘텐츠로 건너뛰기

Java signal chaining

Glasswall 라이브러리는 충돌 발생을 방지하기 위해 signal handling을 사용하지만, Glasswall를 Java에서 실행할 때 이는 JVM과 간섭할 수 있습니다. 이를 올바르게 작동시키려면 Glasswall의 오류가 JVM으로 전파되는 것을 방지하기 위해 signal chaining을 설정해야 합니다. 설정 중에는 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가 설치된 위치에 따라 달라집니다. 이 예시에서는 /usr/lib/jvm/java/lib/libjsig.so 경로를 사용합니다.

설정 없이 Signal chaining

특정 환경적 요인으로 인해 libjsig 라이브러리가 설정되지 않은 경우에도 Glasswall 라이브러리가 문제 없이 작동할 수 있습니다. 이는 보장되지 않으며, 설정을 수행할 것을 강력히 권장합니다.

Release 16.3 및 이전 버전

Release 16.3 및 이전 버전에서는 LD_PRELOAD 환경 변수를 설정하여 libjsig.so 라이브러리의 위치를 가리키도록 해야 합니다. 자세한 내용은 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 라이브러리 경로에 따라 달라집니다.

Release 16.4 및 이후 버전

Release 16.4 및 이후 버전에서는 Editor 라이브러리용 Java wrapper가 libjsig 라이브러리에 직접 종속됩니다. 이를 위해 linker가 라이브러리를 찾아 종속성을 해결할 수 있도록 약간의 설정이 필요합니다. 경로는 라이브러리 위치에 따라 달라집니다. 몇 가지 설정 예시는 아래에 문서화되어 있습니다:

시스템에 따라 /usr/lib 또는 /usr/lib64에 symbolic link를 생성하여 libjsig 라이브러리를 가리키게 할 수 있습니다.

예를 들어, 관리자 권한이 있는 터미널에서 다음 명령을 실행합니다:

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

ln은 심볼릭 링크를 생성하고 ldconfig는 라이브러리 캐시를 업데이트하여 종속성을 확인할 수 있도록 합니다.

예제 2 - LD_LIBRARY_PATH 환경 변수 사용

LD_LIBRARY_PATH 환경 변수를 설정하여 libjsig 라이브러리가 포함된 디렉터리를 가리키게 할 수 있습니다.

예를 들어, 설정은 export LD_LIBRARY_PATH=/usr/lib/jvm/java/lib 또는 Docker 파일에서 ENV LD_LIBRARY_PATH=/usr/lib/jvm/java/lib와 비슷할 수 있습니다.

그러면 해당 디렉터리 내의 모든 라이브러리를 링커가 사용할 수 있게 됩니다.

예제 3 - /etc/ld.so.conf.d/의 새 구성

/etc/ld.so.conf.dlibjsig 라이브러리의 디렉터리를 포함하는 새 구성을 만들 수 있습니다.

예를 들어, 관리자 권한이 있는 터미널에서 다음 명령을 실행합니다:

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

첫 번째 명령은 내용이 /usr/lib/jvm/java/lib/인 구성 파일을 생성합니다. ldconfig 명령이 호출되면 라이브러리 캐시가 업데이트되어 구성 파일에 지정된 디렉터리의 모든 라이브러리가 포함됩니다.