Debian:如何在一個系統上放置兩個版本的 libcurl?

Debian:如何在一個系統上放置兩個版本的 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 (帶有強制-f選項)安裝所有php8.1 資料包,它將刪除/usr/lib 中所有衝突的庫,但這並不重要,因為php5.6-fpm 服務將使用/usr/ php56libs 中的函式庫

答案3

透過 SSH 登入您的伺服器。確保您位於使用者的主目錄中。找到您要安裝的版本並解壓縮該檔案。導航到這個新目錄。使用 nano 或 vim 開啟您的 .bash_profile。例如:將所需的檔案新增至 .bash 並更新 更新您的 .bash_profile 以啟動新配置。檢查curl的位置和版本

相關內容