SSブログ

SPECファイルからPHP5.6.4のRPMをビルドする。 [PHP]

SPECファイルからPHP5.6.4のRPMをビルドする。

■結論。

       
「SPECファイルの編集」
%{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_sbindir}/apxs}} 修正前

%{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_bindir}/apxs}} 修正後


[bibo-roku@centos ~]$ sudo yum install --enablerepo=epel bzip2-devel curl-devel pam-devel openssl-devel sqlite-devel zlib-devel libedit-devel pcre-devel libtool libtool-ltdl-devel systemtap-sdt-devel krb5-devel libc-client-devel postgresql-devel unixODBC-devel libxml2-devel firebird-devel net-snmp-devel libxslt-devel libxml2-devel t1lib-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel libvpx-devel gmp-devel tokyocabinet-devel libmcrypt-devel libtidy-devel freetds-devel aspell-devel recode-devel libicu-devel enchant-devel
「rpmbuild」コマンドをインストールするときに。
---省略---

[bibo-roku@centos ~]$ sudo yum install --enablerepo=epel re2c bison
 初回の「rpmbuild -bb --clean php56u.spec」にエラー発生するときに。
---省略---

[root@centos ~]# yum list installed --enablerepo=epel apr-devel apr-util-devel
「No such file or directory at /usr/bin/apxs line 214.」および「apxs:Error: /usr/bin/apu-1-config not found!.」の対処に。
---省略---

[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec
---省略---
       
      
「Wordpress」をインストールするため、「CentOS_6.6」に「yum(IUS)」経由で「apache 2.4.12」をインストールしてある仮想PCに、「PHP」をインストールします。
 最新版(5.6.8)を「yum」でインストールしたかったのですが、当方のスキルでは無理でしたので、「rpmbuild」コマンドにて「RPMファイル」をビルドすることにしました。
「apache 2.4.12」に対応する「PHP」のバージョンは「SPECファイル」を調べると、「5.5.20」および「5.6.4」であるように思います。
 ビルドするために非常に時間がかかり、長く、時には不要だった対処を記したこの下の記事は、次の失敗の役に立つかも知れないのでこのまま記載しておきます。

 しかし全部読むのが面倒な場合、直ぐに再現できるよう簡潔なこの記事を一番上に用意しておきます。
 当方の環境では上記の「SPECファイル」の編集と不足分のインストールでビルドが完了しました。
 経緯や少し詳細な情報は前日分の記事や、この下の記事を見れば解ります。

■SPECファイルを用いてRPMファイルをビルドする準備。

       
[mockbuild@centos 564]$ ls
php56u-5.6.4-1.ius.centos6.src.rpm  php56u.spec

[mockbuild@centos 564]$ rm php56u.spec ←「SPECファイル」を消去。

[mockbuild@centos 564]$ mv php56u-5.6.4-1.ius.centos6.src.rpm /home/mockbuild/rpmbuild/SOURCES/ ←ソースパッケージを移動。
       
[mockbuild@centos SOURCES]$ rpm2cpio php56u-5.6.4-1.ius.centos6.src.rpm | cpio -id ←ソースパッケージを展開。

[mockbuild@centos SOURCES]$ ls
macros.php                     php-5.4.7-odbctimer.patch  php-fpm.logrotate
opcache-default.blacklist      php-5.4.8-ldap_r.patch     php-fpm.service
opcache.ini                    php-5.4.9-fixheader.patch  php-fpm.sysconfig
php-5.2.0-includedir.patch     php-5.4.9-phpinfo.patch    php.conf
php-5.2.4-embed.patch          php-5.6.0-noNO.patch       php.ini
php-5.3.0-recode.patch         php-5.6.0-oldpcre.patch    php.modconf
php-5.3.1-systzdata-v10.patch  php-5.6.4-strip.tar.xz     php.ztsmodconf
php-5.4.0-dlopen.patch         php-fpm-www.conf           php56u-5.6.4-1.ius.centos6.src.rpm
php-5.4.0-phpize.patch         php-fpm.conf               php56u.spec
php-5.4.7-libdb.patch          php-fpm.init               strip.sh
       
[mockbuild@centos SOURCES]$ mv php56u.spec ../SPECS/ ←「SPECファイル」を移動。

[mockbuild@centos SPECS]$ vi php56u.spec ←「SPECファイル」を編集。
 %{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_sbindir}/apxs}} ←{_sbindir}を{_bindir}に編集。

[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec 
エラー: ビルド依存性の失敗:
        bzip2-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        curl-devel >= 7.9 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        pam-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        openssl-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        sqlite-devel >= 3.6.0 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        zlib-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libedit-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        pcre-devel >= 6.6 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libtool >= 1.4.3 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libtool-ltdl-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        systemtap-sdt-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        krb5-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libc-client-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        postgresql-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        unixODBC-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libxml2-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        firebird-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        net-snmp-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libxslt-devel >= 1.0.18-1 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libxml2-devel >= 2.4.14-1 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        t1lib-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libjpeg-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libpng-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        freetype-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libXpm-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libvpx-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        gmp-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        tokyocabinet-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libmcrypt-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libtidy-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        freetds-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        aspell-devel >= 0.50.0 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        recode-devel は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        libicu-devel >= 4.0 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        enchant-devel >= 1.2.4 は php56u-5.6.4-1.ius.el6.i386 に必要とされています
        
[bibo-roku@centos ~]$ sudo yum install --enablerepo=epel bzip2-devel curl-devel pam-devel openssl-devel sqlite-devel zlib-devel libedit-devel pcre-devel libtool libtool-ltdl-devel systemtap-sdt-devel krb5-devel libc-client-devel postgresql-devel unixODBC-devel libxml2-devel firebird-devel net-snmp-devel libxslt-devel libxml2-devel t1lib-devel libjpeg-devel libpng-devel freetype-devel libXpm-devel libvpx-devel gmp-devel tokyocabinet-devel libmcrypt-devel libtidy-devel freetds-devel aspell-devel recode-devel libicu-devel enchant-devel

インストール:
aspell-devel.i686 12:0.60.6-12.el6
bzip2-devel.i686 0:1.0.5-7.el6_0
enchant-devel.i686 1:1.5.0-4.el6
firebird-devel.i686 0:2.5.4.26856.0-1.el6
freetds-devel.i686 0:0.91-2.el6
freetype-devel.i686 0:2.3.11-15.el6_6.1
gmp-devel.i686 0:4.3.1-7.el6_2.2
krb5-devel.i686 0:1.10.3-37.el6_6
libXpm-devel.i686 0:3.5.10-2.el6
libc-client-devel.i686 0:2007e-11.el6
libcurl-devel.i686 0:7.19.7-40.el6_6.4
libedit-devel.i686 0:2.11-4.20080712cvs.1.el6
libicu-devel.i686 0:4.2.1-9.1.el6_2
libjpeg-turbo-devel.i686 0:1.2.1-3.el6_5
libmcrypt-devel.i686 0:2.5.8-9.el6
libpng-devel.i686 2:1.2.49-1.el6_2
libtidy-devel.i686 0:0.99.0-19.20070615.1.el6
libtool.i686 0:2.2.6-15.5.el6
libtool-ltdl-devel.i686 0:2.2.6-15.5.el6
libvpx-devel.i686 0:1.3.0-5.el6_5
libxml2-devel.i686 0:2.7.6-17.el6_6.1
libxslt-devel.i686 0:1.1.26-2.el6_3.1
net-snmp-devel.i686 1:5.5-50.el6_6.1
openssl-devel.i686 0:1.0.1e-30.el6.8
pam-devel.i686 0:1.1.1-20.el6
pcre-devel.i686 0:7.8-6.el6
postgresql-devel.i686 0:8.4.20-2.el6_6
recode-devel.i686 0:3.6-28.1.el6
sqlite-devel.i686 0:3.6.20-1.el6
systemtap-sdt-devel.i686 0:2.5-5.el6
t1lib-devel.i686 0:5.1.2-6.el6_2.1
tokyocabinet-devel.i686 0:1.4.33-6.el6
unixODBC-devel.i686 0:2.2.14-14.el6
zlib-devel.i686 0:1.2.3-29.el6

依存性関連をインストールしました:
aspell.i686 12:0.60.6-12.el6
autoconf.noarch 0:2.63-5.1.el6
automake.noarch 0:1.11.1-4.el6
elfutils-devel.i686 0:0.158-3.2.el6
elfutils-libelf-devel.i686 0:0.158-3.2.el6
enchant.i686 1:1.5.0-4.el6
file-devel.i686 0:5.04-21.el6
firebird-libfbclient.i686 0:2.5.4.26856.0-1.el6
firebird-libfbembed.i686 0:2.5.4.26856.0-1.el6
freetds.i686 0:0.91-2.el6
glib2-devel.i686 0:2.28.8-4.el6
keyutils-libs-devel.i686 0:1.4-5.el6
libX11-devel.i686 0:1.6.0-2.2.el6
libXau-devel.i686 0:1.0.6-4.el6
libXpm.i686 0:3.5.10-2.el6
libc-client.i686 0:2007e-11.el6
libcom_err-devel.i686 0:1.41.12-21.el6
libgcrypt-devel.i686 0:1.4.5-11.el6_4
libgpg-error-devel.i686 0:1.7-4.el6
libicu.i686 0:4.2.1-9.1.el6_2
libidn-devel.i686 0:1.18-2.el6
libmcrypt.i686 0:2.5.8-9.el6
libselinux-devel.i686 0:2.0.94-5.8.el6
libsepol-devel.i686 0:2.0.41-4.el6
libtidy.i686 0:0.99.0-19.20070615.1.el6
libvpx.i686 0:1.3.0-5.el6_5
libxcb-devel.i686 0:1.9.1-2.el6
lm_sensors-devel.i686 0:3.1.1-17.el6
lm_sensors-libs.i686 0:3.1.1-17.el6
ncurses-devel.i686 0:5.7-3.20090208.el6
net-snmp-libs.i686 1:5.5-50.el6_6.1
popt-devel.i686 0:1.13-7.el6
postgresql.i686 0:8.4.20-2.el6_6
postgresql-libs.i686 0:8.4.20-2.el6_6
recode.i686 0:3.6-28.1.el6
rpm-devel.i686 0:4.8.0-38.el6_6
t1lib.i686 0:5.1.2-6.el6_2.1
tcp_wrappers-devel.i686 0:7.6-57.el6
tokyocabinet.i686 0:1.4.33-6.el6
unixODBC.i686 0:2.2.14-14.el6
xorg-x11-proto-devel.noarch 0:7.7-9.el6                                                
完了しました!
       
      
 前項目で取り出して置いた「SPECファイル」「php56u.spec」を消去します。
 ソースパッケージ「php56u-5.6.4-1.ius.centos6.src.rpm」を「SOURCES」ディレクトリに移動します。
 ソースパッケージを「rpm2cpio | cpio -id」コマンドにて展開します。
 現れた「SPECファイル」「php56u.spec」を「SPECS」ディレクトリに移動し、「vi」コマンドで編集します。
 {_sbindir}を{_bindir}にして保存します。
「rpmbuild」コマンドの「-bb」オプションにて「SPECファイル」から「RPMパッケージ」を作成します。エラーになります。
 要求されたパッケージ類を「mockbuild」ユーザーから「bibo-roku」ユーザーに戻り全てインストールします。

■SPECファイルを用いてにRPMをビルドする。失敗。エラーについて調べる。

       
[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec
---省略---
+ ./configure --host=i686-redhat-linux-gnu --build=i686-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-libdir=lib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --disable-debug --with-pic --disable-rpath --without-pear --with-exec-dir=/usr/bin --with-freetype-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr --with-vpx-dir=/usr --enable-gd-native-ttf --with-t1lib=/usr --without-gdbm --with-jpeg-dir=/usr --with-openssl --with-pcre-regex --with-zlib --with-layout=GNU --with-kerberos --with-libxml-dir=/usr --with-system-tzdata --with-mhash --enable-dtrace --with-apxs2=/usr/bin/apxs --libdir=/usr/lib/php --without-mysql --disable-pdo --without-gd --disable-dom --disable-dba --without-unixODBC --disable-opcache --disable-xmlreader --disable-xmlwriter --without-sqlite3 --disable-phar --disable-fileinfo --without-pspell --disable-wddx --without-curl --disable-posix --disable-xml --disable-simplexml --disable-exif --without-gettext --without-iconv --disable-ftp --without-bz2 --disable-ctype --disable-shmop --disable-sockets --disable-tokenizer --disable-sysvmsg --disable-sysvshm --disable-sysvsem

configure: WARNING: unrecognized options: --with-exec-dir ←確認。
configure: loading cache ../config.cache
checking for grep that handles long lines and -e... (cached) /bin/grep
checking for egrep... (cached) /bin/grep -E
checking for a sed that does not truncate output... (cached) /bin/sed
checking build system type... (cached) i686-redhat-linux-gnu
checking host system type... (cached) i686-redhat-linux-gnu
checking target system type... (cached) i686-redhat-linux-gnu
checking for i686-redhat-linux-gnu-cc... no
checking for i686-redhat-linux-gnu-gcc... no
checking for cc... (cached) cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... (cached) o
checking whether we are using the GNU C compiler... (cached) yes
checking whether cc accepts -g... (cached) yes
checking for cc option to accept ISO C89... (cached) none needed
checking how to run the C preprocessor... (cached) cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... (cached) yes
checking how to run the C preprocessor... cc -E
checking for ANSI C header files... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for memory.h... (cached) yes
checking for strings.h... (cached) yes
checking for inttypes.h... (cached) yes
checking for stdint.h... (cached) yes
checking for unistd.h... (cached) yes
checking for minix/config.h... (cached) no
checking whether it is safe to define __EXTENSIONS__... (cached) yes
checking whether ln -s works... yes
checking for system library directory... lib
checking whether to enable runpaths... no
checking if compiler supports -R... (cached) no
checking if compiler supports -Wl,-rpath,... (cached) yes
checking for gawk... (cached) gawk
checking for bison... no ←確認。
checking for byacc... no
checking for bison version... (cached) invalid ←確認。
configure: WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: none, min: 204, excluded: 3.0). ←確認。
checking for re2c... no ←確認。
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. ←確認。
checking whether to enable computed goto gcc extension with re2c... no
checking whether to force non-PIC code in shared modules... no
checking whether /dev/urandom exists... yes
checking for pthreads_cflags... (cached) -pthread
checking for pthreads_lib... (cached) 

Configuring SAPI modules
checking for AOLserver support... no
checking for Apache 1.x module support via DSO through APXS... no
checking for Apache 1.x module support... no
checking whether to enable Apache charset compatibility option... no
checking for Apache 2.0 filter-module support via DSO through APXS... no
checking for Apache 2.0 handler-module support via DSO through APXS... 

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /usr/bin/apxs follows:
cannot open /httpd/build/config_vars.mk: No such file or directory at /usr/bin/apxs line 214.
configure: error: Aborting
エラー: /var/tmp/rpm-tmp.Ul67CP の不正な終了ステータス (%build)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.Ul67CP の不正な終了ステータス (%build)
       
      
 ビルドは失敗してしまいました。ログは長いので、切りの良さそうなところから見てみると、「WARNING:」の文字が3つ見えます。
「WARNING: unrecognized options: --with-exec-dir」
「 WARNING: This bison version is not supported for regeneration of the Zend/PHP parsers (found: none, min: 204, excluded: 3.0).」
「WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.」
 調べながら対処していきます。

■「--with-exec-dir」の対処。

       
[mockbuild@centos SPECS]$ vi php56u.spec ←「--with-exec-dir」を検索。
---抜粋---
    --with-exec-dir=%{_bindir} \
    
       
      
---追記---
 下記の対処は
[root@centos ~]# yum install --enablerepo=epel apr-devel apr-util-devel
 をインストールすることにより、発生はするがそのままビルドできましたので、不要な対処でした。
 ただ削除すれば警告も出なくなりました。
---追記終わり---

「WARNING: unrecognized options: --with-exec-dir」についての対処です。
 警告文の直ぐ上の「./configure」に「--」オプションが沢山ついているのですが、ここに「 --with-exec-dir=/usr/bin」とありますね。
 インターネットで検索してみると公式HPに記載がありました。
「 --with-exec-dir[=DIR]  セーフモード時には、このディレクトリにある実行ファイルのみ実行を許可します。 デフォルト値は /usr/local/php/bin です。 」
 また「警告 この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。」とあります。
「5.6系」のインストールですから、このオプションを追加しなければ良いんでしょうかね。消去して保存します。

■「bison」と「re2c」の対処。

       
[bibo-roku@centos ~]$ sudo yum list installed | grep bison
[bibo-roku@centos ~]$ sudo yum list installed | grep bison*
[bibo-roku@centos ~]$ sudo yum list installed | grep *bison
[bibo-roku@centos ~]$ sudo yum provides bison
---省略---
bison-2.4.1-5.el6.i686 : A GNU general-purpose parser generator
リポジトリー        : base
一致          :

[bibo-roku@centos ~]$ sudo yum install bison
---省略---
インストール:
  bison.i686 0:2.4.1-5.el6                                                               
完了しました!

[bibo-roku@centos ~]$ sudo yum list installed | grep re2c
[bibo-roku@centos ~]$ sudo yum list installed | grep re2c*
libfprint.i686                       0.1.0-19.pre2.el6    @base
[bibo-roku@centos ~]$ sudo yum list installed | grep *re2c
[bibo-roku@centos ~]$ sudo yum provides --enablerepo=epel re2c
---省略---
re2c-0.13.5-1.el6.i686 : Tool for generating C-based recognizers from regular expressionsリポジトリー        : epel
一致          :

[bibo-roku@centos ~]$ sudo yum install --enablerepo=epel re2c
---省略---
インストール:
  re2c.i686 0:0.13.5-1.el6                                                               
完了しました!

[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec
       
      
 上の項目で着目した警告文への対処が正しいか、必要なファイル(?)を確認インストールしてみます。
 まずは「bison」について調べてみます。コマンド「yum list installed」でインストールされているか確認するも返答無しなので、インストールしていないようです。
 インストールするためにコマンド「yum provides」を使用して確認すると、リポジトリID「base」で単体でインストールできるようです。
 次にインターネットで調べてみると「通常パッケージのbisonを使うとconfigure時に警告が表示されるためサポートされているbisonを一時的に使用します。」とありました。一時的にと言うのはインストール時だけを指すそうですが、PHPをインストールした後はアンインストールするのでしょうか。

 次に「re2c」についても同様の作業を実施します。
 インターネットの情報で「bison」と同じでした。
 全てのエラーを解決したわけでは無いのですが、とりあえず「インストール」という形で解決できるのでは無いかと思われるものだけを対処して、再度ビルドしてみてどの様な結果がでるか確認してみます。
 結果「WARNING」は消えました! が、エラーが残っています。

■残りのエラー。

       
Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /usr/bin/apxs follows:
cannot open /httpd/build/config_vars.mk: No such file or directory at /usr/bin/apxs line 214.
configure: error: Aborting
       
      
---追記---
 下記の対処は
[root@centos ~]# yum install --enablerepo=epel apr-devel apr-util-devel
 をインストールすることにより、発生しなくなりました。不要な対処でした。
---追記終わり---

 残ったエラーについて把握してみます。
 1「perl」がインストールされいない。
 2「apxs」が見つからない。パスが間違えているのでは無いか。
 3「apache」のビルドに「--enable-so」が行われていないのでは無いか。
 「/httpd/build/config_vars.mk」が開けない。

■残りのエラー「perl」の確認。

       
[bibo-roku@centos ~]$ sudo yum list installed perl ←インストールの確認。
---省略---
インストール済みパッケージ
perl.i686 4:5.10.1-136.el6_6.1 @updates


       
      
 1については、「perl」のインストールを確認してみました。インストール済みでした。

■残りのエラー「apxs」の確認。

       
[bibo-roku@centos ~]$ sudo yum provides --enablerepo=epel *bin/apxs
---省略---
httpd-devel-2.2.15-39.el6.centos.i686 : Development interfaces for the Apache HTTP server
リポジトリー        : base
一致          :
ファイル名    : /usr/sbin/apxs

httpd24u-devel-2.4.12-5.ius.centos6.i686 : Development interfaces for the Apache HTTP server
リポジトリー        : installed
一致          :
ファイル名    : /usr/bin/apxs ←場所確認。

[bibo-roku@centos ~]$ sudo yum list installed httpd24u-devel
---省略---
インストール済みパッケージ
httpd24u-devel.i686      2.4.12-5.ius.centos6     @ius

[mockbuild@centos SPECS]$ vi php56u.spec
---省略---
# Build Apache module, and the CLI SAPI, /usr/bin/php
pushd build-apache
build --with-apxs2=%{_httpd_apxs} \ ←編集しコメントアウト。
      --with-apxs2=/usr/bin \ ←編集後。
      --libdir=%{_libdir}/php \
      --without-mysql \
      --disable-pdo \
      ${without_shared}
---省略---
# Build a special thread-safe Apache SAPI
pushd build-zts
build --with-apxs2=%{_httpd_apxs} \  ←編集しコメントアウト。
      --with-apxs2=/usr/bin \ ←編集後。
      --includedir=%{_includedir}/php-zts \
      --libdir=%{_libdir}/php-zts \
      --enable-maintainer-zts \
      --with-config-file-scan-dir=%{_sysconfdir}/php-zts.d \
      --without-mysql \
      --disable-pdo \
      ${without_shared}


      --with-apxs2=/usr/bin \
      --with-apxs2filter=/usr/bin \ ←追記。


[bibo-roku@centos bin]$ sudo vi apxs
my $installbuilddir = $libdir . "/httpd/build"; ←編集。
my $installbuilddir = $libdir . "/usr/lib/httpd/build"; ←編集後。
       
      
 2については、「apxs」が見つからない。とのことなのですが、「/usr/bin」にありましたので、パスの設定が問題なのでは。
 ネットで調べてみますと「apxsが存在するのにエラーとなっている場合は直接パスを --with-apxs2=/usr/sbin のように指定します。」とのこと。二ヶ所修正しました。
 さらに「Apache2のバージョンによっては--with-apxs2とするとエラーが発生してしまい、--with-apxs2filterと変更するとうまく行くことがあります。」ともあり、これも試します。
 3については、「apache」のインストール時の設定だと思うので、インストール済みの今回はパスしておきます。
 次の「cannot open /httpd/build/config_vars.mk No such file or directory at /usr/bin/apxs line 214.」ですが、パスが「/usr/bin/apxs」と「sbin」ではありません。先の変更と実際のパスと合っています。
「cannot open /httpd/build/config_vars.mk」は読んだとおりですが、実際のパスは「/usr/lib/httpd/build/config_vars.mk」なので、修正をしてみます。

■「Cannot open /httpd/build/config_vars.mk No such file or directory at /usr/bin/apxs line 214.」の対処。

       
[mockbuild@centos bin]$ vi apxs 
---省略---
sub get_config_vars{
    my ($file, $rh_config) = @_;

    open IN, $file or die "cannot open $file: $!";
    while (){
        if (/^\s*(.*?)\s*=\s*(.*)$/){
            $rh_config->{$1} = $2;
        }
    }
    close IN;
}
---省略---

「$file」検索
sub get_config_vars{
my ($file, $rh_config) = @_;

---省略---
「get_config_vars」検索
get_config_vars("$installbuilddir/config_vars.mk",\%config_vars);


---省略---
「$installbuilddir」検索
 my $installbuilddir = $libdir . "/httpd/build";

---省略---
「$libdir」検索 
my $libdir = `pkg-config --variable=libdir apr-1`;

[root@centos ~]# yum provides apr-1.pc
---省略---
警告: yum のバージョン 3.0.x は、誤ってファイル名に対して一致するでしょう。
その振る舞いをするには「*/apr-1.pc」もしくは「*bin/apr-1.pc」が使用できます。
No Matches found

[root@centos ~]# yum provides */apr-1.pc
---省略---
apr-devel-1.3.9-5.el6_2.i686 : APR library development kit
リポジトリー        : base
一致          :
ファイル名    : /usr/lib/pkgconfig/apr-1.pc

[root@centos ~]# yum list installed | grep apr-devel
[root@centos ~]# yum list installed --enablerepo=epel apr-devel
---省略---
エラー: 表示するパッケージはありません

[root@centos ~]# yum install --enablerepo=epel apr-devel
インストール:
  apr-devel.i686 0:1.3.9-5.el6_2                                                                                                  
依存性関連をインストールしました:
  apr.i686 0:1.3.9-5.el6_2                                                                                                        
完了しました!

[root@centos ~]# find / -name apr-1.pc
/usr/lib/pkgconfig/apr-1.pc ←確認。
       
      
 まず開けないという「/httpd/build/config_vars.mk」を探してみると「/usr/lib/httpd/build/config_vars.mk」に存在しました。
 そもそも記述の仕方が相対パスみたいですが……。
 次に「No such file or directory at /usr/bin/apxs line 214.」と具体的な指摘があります。「apxs」を「vi」で開き214行目を確認します。
 さっぱりわからない内容ですが「cannot open」だけ確認できます。
 仕方ないので「変数」を検索しまくります。「$file」を検索すると210行目辺りに「get_config_vars」という解りやすい名前を発見しました。これを検索します。
 40行あたりに
「get_config_vars("$installbuilddir/config_vars.mk",\%config_vars);」  とありました。
「$installbuilddir」を検索すると
「 my $installbuilddir = $libdir . "/httpd/build";」
「$libdir」検索 を検索すると
「my $libdir = `pkg-config --variable=libdir apr-1`;」
「apr-1」インターネットで検索すると、「/usr/lib64/pkgconfig に apr-1 な設定ファイルが存在しないため、設定が読めず。」とありました。
 当方は64ビットマシンではありませんが、「apr-1.pc」とやらが必要らしいので、まずはOS内を検索しますがヒットしませんでした。 「yum provides」で調べますと「apr-devel-1.3.9-5.el6_2.i686」に含まれるようなのでインストールします。

■新たなエラーの確認。と対処。

       
[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec

The output of /usr/bin/apxs follows:
-02 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwide-tables
apxs:Error: /usr/bin/apu-1-config not found!.
configure: error: Aborting
エラー: /var/tmp/rpm-tmp.yvQV6w の不正な終了ステータス (%build)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.yvQV6w の不正な終了ステータス (%build)
    
    
[root@centos ~]# find / -name "apu*"
/usr/include/apr15u-1/apu_version.h
/usr/include/apr15u-1/apu_want.h
/usr/include/apr15u-1/apu.h
/usr/include/apr15u-1/apu_errno.h
/usr/bin/apu15u-1-config ←非常に似ているファイル。

[root@centos bin]# ls
apr-1-config
apr15u-1-config
apu15u-1-config
apxs

[root@centos bin]# yum provides */apu-1-config
---省略---
apr-util-devel-1.3.9-3.el6_0.1.i686 : APR utility library development kit
リポジトリー        : base
一致          :
ファイル名    : /usr/bin/apu-1-config

[root@centos bin]# yum install apr-util-devel
---省略---
インストール:
  apr-util-devel.i686 0:1.3.9-3.el6_0.1                                                                   
依存性関連をインストールしました:
  apr-util.i686 0:1.3.9-3.el6_0.1                                                                         
完了しました!

[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec
       
      
 各対処を終えたので、再び「SPECファイル」から「RPMファイル」をビルドします。
 再度エラー発生。「apxs:Error: /usr/bin/apu-1-config not found!.」これが解りやすそうなのでファイルをCentOS内で検索してみます。
 非常に似ている名前のファイルを発見。ファイル名を変更して良いものなのか……。 「ls」コマンドでファイルを見ているとやはり追加でインストールすれば良いのでしょうか。
 インストールして再度ビルドします。

■「SPECファイル」から「RPMファイル」をビルドする。

       
[mockbuild@centos SPECS]$ rpmbuild -bb --clean php56u.spec
伸張ファイルの検査中: /usr/lib/rpm/check-files /home/mockbuild/rpmbuild/BUILDROOT/php56u-5.6.4-1.ius.el6.i386
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-cli-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-dbg-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-fpm-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-common-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-devel-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-opcache-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-imap-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-ldap-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-pdo-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-mysqlnd-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-pgsql-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-process-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-odbc-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-soap-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-interbase-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-snmp-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-xml-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-xmlrpc-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-mbstring-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-gd-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-bcmath-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-gmp-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-dba-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-mcrypt-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-tidy-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-mssql-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-embedded-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-pspell-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-recode-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-intl-5.6.4-1.ius.el6.i386.rpm
書き込み完了: /home/mockbuild/rpmbuild/RPMS/i386/php56u-enchant-5.6.4-1.ius.el6.i386.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.PCM81O
+ umask 022
+ cd /home/mockbuild/rpmbuild/BUILD
+ cd php-5.6.4
+ /bin/rm -rf /home/mockbuild/rpmbuild/BUILDROOT/php56u-5.6.4-1.ius.el6.i386
+ exit 0
実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.dnMOep
+ umask 022
+ cd /home/mockbuild/rpmbuild/BUILD
+ rm -rf php-5.6.4
+ exit 0
       
      
 今までのようなエラーは発生しませんでした!
 ただ省略しましたが、「Conflicts: php-enchant < 5.6」やらが沢山あったのでそれが悪いことなのかよくわかりません。
 また、これまでのエラーに対処した方法が全て正しいのかも調べなくてはと思っています。
 基本的にはエラーの原因はビルドに必要な物がインストールされていないことが原因であったことが多いような気がします。
 なので、修正した「SPECファイル」等をデフォルトに戻してからもう一度リビルドしてみようかと思います。(えらく時間がかかりますが……。)


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。