데비안: 한 시스템에 두 가지 버전의 libcurl을 넣는 방법은 무엇입니까?

데비안: 한 시스템에 두 가지 버전의 libcurl을 넣는 방법은 무엇입니까?

단일 서버(debian10)에서 두 개의 웹 앱을 마이그레이션하려고 하는데 둘 다 서로 다른 버전의 PHP가 필요하고 둘 다 제대로 작동하려면 cURL 확장이 필요합니다.

php5.6-curl은 libcurl v3을 사용합니다.

php8.1-curl은 libcurl v4를 사용합니다.

먼저 php5.6-curl을 설치했고 php8.1-curl을 설치하려고 하면 apt에서 다음과 같은 알림을 표시합니다.The following packages have unmet dependencies: php8.1-curl : Depends: libcurl4 (>= 7.56.1) but it is not going to be installed

apt에서 -f를 사용하면 php5.6-curl이 제거됩니다...

단일 시스템에서 두 개의 libcurl 라이브러리를 사용할 수 있게 만드는 가장 우아한 방법은 무엇입니까?

고마워요, 로버트

편집: 내가 볼 수 있는 한 문제는 libcurl3과 libcurl4가 동일한 파일 /usr/lib/x86_64-linux-gnu/libcurl.so.4를 공유하고 패키지를 다시 설치할 때 변경된다는 것입니다(libcurl3<->libcurl4). php[5.6,8.1]-fpm은 라이브러리를 로드하려고 시도합니다. 부적절한 libcurl.so.4 버전을 가져오는 라이브러리는 실패하고 PHP는 해당 모듈을 사용할 수 없습니다.

어쩌면 4eg php5-curl 바이너리가 사용자 정의 경로의 라이브러리를 사용하도록 하는 우아한 방법이 있을까요?

답변1

필요한 모든 것이 포함된 컨테이너에 두 앱을 모두 넣습니다.

답변2

나는 해결 방법을 직접 찾았습니다. 비슷한 문제를 해결하려면 가장 우아한 방법이 아닌 내 방법을 사용할 수 있습니다.

  1. 필요한 모든 php5.6 패킷을 설치하십시오.
  2. /usr/lib 디렉토리를 /usr/php56libs로 복사합니다.
  3. 내 경우에는 systemd 서비스 파일을 편집하십시오. systemctl edit --full php5.6-fpm
  4. 아래에서비스섹션 추가 환경 변수: Environment="LD_LIBRARY_PATH=/usr/php56libs"
  5. 이제 apt(force -f옵션 사용)를 사용하여 모든 php8.1 패킷을 설치할 수 있습니다. 그러면 /usr/lib에서 충돌하는 모든 lib가 제거되지만 php5.6-fpm 서비스는 /usr/php56libs의 라이브러리를 사용하기 때문에 문제가 되지 않습니다.

답변3

SSH를 통해 서버에 로그인합니다. 사용자의 홈 디렉터리에 있는지 확인하세요. 설치하려는 버전을 찾으십시오. 파일의 압축을 푸십시오. 이 새 디렉터리로 이동합니다. nano 또는 vim을 사용하여 .bash_profile을 엽니다. 예: 필요한 파일을 .bash에 추가하고 업데이트하십시오. .bash_profile을 업데이트하여 새 구성을 활성화하십시오. 컬의 위치와 버전을 확인하세요

관련 정보