Software-Installation

我應該用自編譯的替換 /usr/bin 中的 PHP 系統二進製文件嗎?

  • January 18, 2015

我在我的 Mac 10.9 機器上安裝了 PHP 5.4 版,並想升級到 5.6。

我下載了源文件並執行./configure了. 我看了看,好像編譯安裝成功了,但是它自己安裝到. 舊版本的 PHP 安裝在.make``make install``/usr/local/bin``/usr/bin

當我執行時php,使用該/usr/bin位置,因為/usr/bin/usr/local/bin. $PATH我想使用新版本。

/usr/bin我應該用 中的版本替換舊版本的 PHP/usr/local/bin嗎?還是我應該完全刪除它們/usr/bin

這有點棘手,因為 5.6 安裝還安裝了一些其他的東西,比如新版本的perlandpecl和一些其他幫助程序二進製文件(包括php-configand phpize)。其中一些(最後兩個)已經存在於/usr/bin文件夾中,但perlpecl沒有。我應該把所有的新東西搬到/usr/bin?

最後,為什麼新的安裝/usr/local/bin了舊的卻沒有?區分重要嗎?PHP 團隊是否出於某種原因決定移動它?或者它只是/usr/bin因為它是我的系統附帶的,而下載的更新被放入了/usr/local/bin

的位置是否php.ini取決於其中的任何一個?

通常,/usr層次結構用於來自作業系統供應商/站點管理員的東西,而/usr/local用於本地安裝的東西(例如在網路上,/usr可能是由多台電腦共享的 NFS 掛載,而是/usr/local本地文件系統)。這就是為什麼配置腳本通常/usr/local預設安裝到 - 不破壞系統包。這也是原因,為什麼PATH要在/usr/local/{bin,sbin} 之前 /usr/{bin,sbin}

要更改它,您需要做的所有事情(對於表現良好的建構系統)正在執行:

./configure --prefix=/path/to/install/to

這在很大程度上取決於舊 PHP 版本的來源。僅僅覆蓋它不是一個好主意,因為它可能會留下一些舊版本的文件(這就是為什麼使用包管理器是一個好主意TM)。因此,除非您有一種干淨的方式來解除安裝以前的版本,否則/usr/local可能會稍微好一些。另一種選擇是(錯誤)使用單獨的層次結構/opt- 例如安裝到/opt/php5.6.

引用自:https://unix.stackexchange.com/questions/179634