
如何讓我的 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_PATH
to /usr/local/programname/lib
,現在它可以工作了。我的 PHP conf 現在使用我安裝在/usr/local/programname
.
經過這麼多研究,這就是我想到的。但是,在我繼續檢查之前,我無法確認它對每個想要這樣做的人都有效。