Php

CentOS - PHP - Yum 安裝自定義 ./configure 參數

  • June 18, 2012

我已經在我的開發伺服器上成功配置和編譯了 php,並且執行良好,但是在與系統管理員好友交談後,他告知不建議將最新版本的自定義編譯用於生產(甚至開發)系統。他注意到他們自定義配置和編譯 PHP 5.3.6 的情況,但發現低級 Postgres 驅動程序存在一些問題,因此他們不得不恢復到 5.3.3。

所以我正在考慮回到 yum 安裝 PHP,但是我有幾個自定義配置設置,想知道是否可以通過或配置 PHP 將如何通過 YUM 編譯?

我目前的配置行:

Configure Command =>  './configure'  '--with-libdir=lib64' '--prefix=/usr/local/_custom/app/php' '--with-config-file-path=/usr/local/_custom/app/php/etc' '--with-config-file-scan-dir=/usr/local/_custom/app/php/etc/modules' '--disable-all' '--with-apxs2=/usr/sbin/apxs' '--with-curl=/usr/sbin/curl' '--with-gd' '--with-iconv' '--with-jpeg-dir=/usr/lib' '--with-mcrypt=/usr/bin' '--with-pcre-regex' '--with-pdo-mysql=mysqlnd' '--with-png-dir=/usr/lib' '--with-zlib' '--enable-ctype' '--enable-dom' '--enable-hash' '--enable-json' '--enable-libxml' '--enable-mbstring' '--enable-mbregex' '--enable-pdo' '--enable-session' '--enable-simplexml' '--enable-xml' '--enable-xmlreader' '--enable-xmlwriter'

下載軟體包的 src.rpm,它包含原始原始碼和編譯自定義 rpm 所需的所有文件:

  • php.spec - rpmbuild 所需的規範文件
  • php-xxx.tar.gz - 原始原始碼
  • 各種更新檔(.diff、.patch)
  • 要添加的文件文件(如果存在)

要建構 rpm - 您將需要包含 rpmbuild 程序的 rpm-build 包。

也可以使用 yumdownloader(來自 yum-utils 包)來完成:

yum install yum-utils rpm-build

yumdownloader --source php

安裝 src.rpm:

rpm -Uvh *.src.rpm

cd 到 rpmbuild SPEC 目錄;

RHEL5,舊版 Fedora

cd /usr/src/redhat/SPEC/

使用:

cd /usr/src/packages/SPEC/

RHEL6,較新的 Fedora:

cd ~/rpmbuild/SPEC/

php.spec 文件包含有關如何建構包以及將包含哪些組件的詳細資訊。它還包含有關依賴項和所需包的數據,以便正確建構新包。因此,rpmbuild 會提醒您任何失去的軟體包。

您將需要:

  1. 從 php.net 下載更新的 php 原始碼並將其放入 SOURCES 目錄
  2. 在 php.spec 文件中的 “Version:” 字元串中指定新版本,也在 “Release:” 字元串中使用較低的值並在其中添加您的自定義名稱,例如 “Release: 0.mike”
  3. 檢查 .spec 文件是否有可能的額外更改(也許目前版本不需要一些安全更新檔,如果文件已經打更新檔,rpmbuild 會告訴你)。如果您有任何問題,可能需要註釋一些“Patch xx:”字元串和一些“%patch xx”。
  4. 執行 rpmbuild:

rpmbuild –target x86_64 -ba php.spec

–target x86_64 - 指定平台(可以是 i386、x86_64、amd64 等)

-ba - “build all”,將建構最終的 .rpm 和新的 src.rpm 包

您可以在 ../RPM/ 和 ../SRPM/ 目錄中找到建構的軟體包。

此方法確保包含供應商更新檔程序的目錄。文件結構層次相同,組件兼容,滿足依賴關係,舊版本將被安全替換。此外,您保證您未來的更新。

ps 我不同意“生產中的新版本不好”的字元串。我為幾十家公司提供支持服務,也有共享主機,我總是喜歡有新版本。php 的唯一問題是從一種顛覆轉移到另一種(如 5.1.x 到 5.2.x,5.2.x 到 5.3.x) - 有一些一般性變化和不推薦使用/刪除的功能。但更新更快、更安全、維護得更好,緊隨其後。

pss 在我的生活中,我永遠不會手動編譯任何東西並將文件放在 /usr/local/ 中,我已經在幾天內學會了 rpm,因為我需要它,現在一切執行順利。

引用自:https://serverfault.com/questions/395922