PHP 소스 설치가 /usr/local/programname/lib 또는 /usr/local/lib 내부의 라이브러리를 사용하도록 하려면 어떻게 해야 합니까?

PHP 소스 설치가 /usr/local/programname/lib 또는 /usr/local/lib 내부의 라이브러리를 사용하도록 하려면 어떻게 해야 합니까?

/usr/local/programname/libPHP 소스 설치에서 또는 대신 내부 라이브러리를 사용하도록 하려면 어떻게 해야 합니까 /usr/local/lib?

LD_LIBRARY_PATH를 LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib".

그리고, 로그아웃했습니다. 심지어 실행하고 source /etc/environment(/etc/environment에 LD_LIBRARY_PATH 변수를 넣었습니다) 시스템을 재부팅하기도 했습니다.

하지만 여전히 실행하면 ./configure --with-openssl --with-curllibssl이 존재하지 않는다는 메시지가 나타납니다.

테스트를 위해 최신 버전이 필요하기 때문에 apt에서 제공하는 libssl-dev및 패키지를 사용하고 싶지 않습니다 .libcurl-dev

/usr/local/lib그리고 저는 다음과 같이 언급했습니다: . 대신 에 프로그램의 lib 디렉토리를 설치하면 /usr/local/programname/lib환경 변수를 설정하지 않고도 작동합니다.

하지만 제 생각에는 /usr/local/programname/lib더 명확하기 때문에 이런 경로를 사용하고 싶습니다.

/usr/local/programname/libPHP가 대신 내부 라이브러리를 사용하도록 하려면 어떻게 해야 합니까 /usr/local/lib? 즉, /usr/local/programname/lib다른 lib디렉터리 보다 더 우선순위를 두고 싶다는 뜻입니다 .

programname는 내부에 설치된 각 프로그램의 이름을 나타냅니다 /usr/local.

심지어 를 사용해 보고 ( 그 안에 /etc/ld.so.conf.d/programname.conf썼다 ) . 그러나 여전히 운이 없습니다./usr/local/programnameldconfig

그런데 저는 Ubuntu 20.10을 사용하고 있습니다.

편집하다:

"시스템의 관습에 맞서 싸우지 마세요"- 이대로는 못 가겠어요. 나는 이것을 하려고 노력해야 합니다. 그렇지 않으면 나는 막혀서 다른 사람에게 의존하게 될 것입니다.좀 늙었어적절한 패키지가 나에게 제공합니다(최신 패키지를 제공하더라도 http/3을 사용하여 테스트하는 등의 작업을 수행할 수 없습니다..). 그리고 테스트도 불가능합니다. 나는 내 프로그램을 미래에도 사용할 수 있도록 만들고 심지어 이를 재미있게 실험하기 위해 이렇게 합니다. 새로운 프로그램으로 테스트함으로써. 여러 버전의 라이브러리로 테스트하기 때문에 설치하는 것이 /usr/local좋지 않습니다. OpenSSL 1.1.1i, OpenSSL 3.0.0, 그리고 다른 버전에서도 테스트하는 것처럼 말이죠. 따라서 /usr/local에 설치하는 것은 이 점에서 나에게 도움이 되지 않지만 에 설치하는 것이 더 깨끗 /usr/local/openssl-1.1.1i하고 /usr/local/openssl-3.0.0더 많은 시간을 절약할 것입니다. 매번 make install계속 해서 달릴 수만은 없습니다 . make uninstallOpenSSL뿐만 아니라 cURL 및 기타 패키지도 있습니다.

답변1

시스템 기본 규칙은 너무 많은 곳에서 사용되므로 다른 디렉터리를 사용하면 큰 오버헤드가 발생합니다.

가장 쉬운 방법은 테스트에 Docker 컨테이너를 사용하는 것입니다. 이렇게 하면 컨테이너 내부의 기본 시스템 위치를 사용할 수 있습니다.

답변2

set 을 PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"사용하여 추가했는데 이제 작동합니다. 내 PHP conf는 이제 내가 설치한 버전을 사용합니다 .LD_LIBRARY_PATH/usr/local/programname/lib/usr/local/programname

많은 연구 끝에 이것이 제가 생각해 낸 것입니다. 하지만 계속 확인하기 전까지는 이 방법을 원하는 모든 사람에게 효과가 있는지 확인할 수 없습니다.

관련 정보