如何讓 PHP 來源安裝使用 /usr/local/programname/lib 或 /usr/local/lib 內的函式庫?

如何讓 PHP 來源安裝使用 /usr/local/programname/lib 或 /usr/local/lib 內的函式庫?

如何讓我的 PHP 來源安裝使用/usr/local/programname/lib或中的函式庫/usr/local/lib

我嘗試將 LD_LIBRARY_PATH 設定為每個程式名稱,例如LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib".

而且,我退出了。甚至運行source /etc/environment(我已將 LD_LIBRARY_PATH 變數放入 /etc/environment 中),甚至重新啟動系統。

但是,當我運行時./configure --with-openssl --with-curl,它仍然告訴我 libssl 不存在。

我不想使用apt 提供的libssl-dev軟體包libcurl-dev,因為我需要最新版本來進行測試。

而且,我注意到:如果我將程式的 lib 目錄安裝在/usr/local/lib而不是 中/usr/local/programname/lib,則它無需設定任何環境變數即可運作。

但是,在我看來,/usr/local/programname/lib更清晰,所以我想使用這種類型的路徑。

我怎麼才能讓 PHP 使用裡面的函式庫/usr/local/programname/lib而不是/usr/local/lib?我的意思是,我想/usr/local/programname/lib比其他lib目錄給予更多的優先順序。

programname指的是安裝在 中的每個程式的名稱/usr/local

我什至嘗試使用/etc/ld.so.conf.d/programname.conf(我/usr/local/programname在裡面寫的),然後運行ldconfig.但仍然沒有運氣。

順便說一句,我使用的是 Ubuntu 20.10

編輯:

不要違背系統的約定- 我不能就這樣繼續前進。我必須嘗試這樣做,否則我就會陷入困境,並依賴於有點舊apt 給我的軟體包(即使它給了我最新的軟體包,我也不能例如:使用 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 uninstall不僅是 OpenSSL,甚至還有 cURL 和其他軟體包。

答案1

系統預設約定用在很多地方,以至於您透過使用不同的目錄來為自己帶來很大的開銷。

最簡單的方法是使用 Docker 容器進行測試。這樣您就可以使用容器內的預設系統位置。

答案2

我添加了PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"set LD_LIBRARY_PATHto /usr/local/programname/lib,現在它可以工作了。我的 PHP conf 現在使用我安裝在/usr/local/programname.

經過這麼多研究,這就是我想到的。但是,在我繼續檢查之前,我無法確認它對每個想要這樣做的人都有效。

相關內容