소스에서 소프트웨어를 컴파일하려면 최신 라이브러리가 필요 libpcre3-dev
하지만, 내 서버에 있는 운영 체제(Ubuntu)의 현재 배포판에는 이전 버전만 있고 libpcre3-dev
사용 가능한 백포트가 없습니다.
libpcre3-dev
최신 버전으로 별도의 서버에서 바이너리를 컴파일 하고 실제 서버에 바이너리를 다시 설치할 생각입니다 . 두 가지 질문이 있습니다.
이것이 작동합니까? 내 주요 관심사는
libpcre3
내 서버에 여전히 이전 버전이 있고libpcre3
바이너리가 최신 버전으로 컴파일되었더라도 런타임 시 여전히 최신 버전이 필요하다는 것입니다libpcre3-dev
.내 서버에 바이너리를 다시 설치하는 가장 좋은 방법은 무엇입니까? 바이너리를 복사하거나
.deb
패키지에 넣고 (가능한 경우) 패키지 관리자를 사용하여 설치하시겠습니까?
답변1
프로그램에 서버에서 사용할 수 없는 새로운 기능이 필요한 경우 해당 기능은 런타임에 사용할 수 없으며 프로그램이 실행되지 않을 수 있습니다.
라이브러리를 정적으로 연결할 수 있습니다. 단점은 프로그램과 별도로 라이브러리를 업그레이드할 수 없다는 것입니다. 이 버전의 라이브러리에서 보안 취약점이 발견되면 프로그램을 다시 빌드해야 합니다. -lpcre3
링커 명령줄에서 /usr/lib/libpcre3.a
.
소프트웨어가 설치된 동일한 디렉토리에 라이브러리를 동적으로 링크하고 복사할 수 있습니다. 소프트웨어는 이 추가 디렉터리를 포함하도록 라이브러리 로드 경로를 설정하는 래퍼 스크립트를 통해 시작됩니다.
#!/bin/sh
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/my-software/lib"
/opt/my-software/bin/foo "$@"