SSブログ

「rpm-build」コマンドと「SPECファイル」の確認 [サーバ立ち上げ準備]

「rpm-build」コマンドと「SPECファイル」の確認

■アーカイブファイルを用いてRPMファイルをビルドする。失敗。

       
[bibo-roku@centos Downloads]$ su - mockbuild ←「rpmbuild」コマンド専用に。
パスワード:
[mockbuild@centos ~]$ mkdir download ←任意で作業用にディレクトリ作成。
[mockbuild@centos ~]$ ls
download

[mockbuild@centos download]$ ls
php-5.6.8.tar.bz2 ←「tar.bz2」でダウンロードした。

[mockbuild@centos download]$ rpmbuild -tb php-5.6.8.tar.bz2 
エラー: php-5.6.8.tar.bz2 から spec ファイルの読み込みに失敗しました。
       
      
 ビルドするために専用ユーザ「mockbuild」になり、ダウンロードしたファイルを格納するディレクトリ「download」を作成しました。
 PHP5.6系の最新版は「5.6.8」とのことですので、ダウンロードします。
 当方は「startx」コマンドを実施し「FireFox」からダウンロードしました。
「rpmbuild」コマンド、オプション「-tb」(アーカイブファイルを用いてRPMファイルをビルドする)でビルドしたのですが、「SPEC」ファイルがない模様。
 ファイルを作成したりはハードルが高いので、次の方法に移行します……。

■SRPMを用いてにRPMをビルドする。失敗。追加インストール。

       
[mockbuild@centos download]$ wget http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/php56u-5.6.7-1.ius.centos6.src.rpm

[mockbuild@centos download]$ rpmbuild --rebuild --clean php56u-5.6.7-1.ius.centos6.src.rpm 
php56u-5.6.7-1.ius.centos6.src.rpm をインストール中です。
エラー: ビルド依存性の失敗:
        bzip2-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        curl-devel >= 7.9 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        pam-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        httpd-devel < 2.4 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        openssl-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        sqlite-devel >= 3.6.0 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        zlib-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libedit-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        pcre-devel >= 6.6 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libtool >= 1.4.3 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libtool-ltdl-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        systemtap-sdt-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libacl-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        krb5-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libc-client-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        postgresql-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        unixODBC-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libxml2-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        firebird-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        net-snmp-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libxslt-devel >= 1.0.18-1 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libxml2-devel >= 2.4.14-1 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        t1lib-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libjpeg-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libpng-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        freetype-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libXpm-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libvpx-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        gmp-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        tokyocabinet-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libmcrypt-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libtidy-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        freetds-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        aspell-devel >= 0.50.0 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        recode-devel は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        libicu-devel >= 4.0 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        enchant-devel >= 1.2.4 は php56u-5.6.7-1.ius.el6.i386 に必要とされています
        
[mockbuild@centos download]$ sudo yum list installed httpd24u-devel
---省略---
インストール済みパッケージ
httpd24u-devel.i686    2.4.12-5.ius.centos6    @ius

[bibo-roku@centos Downloads]$ sudo yum install --enablerepo=epel bzip2-devel curl-devel pam-devel httpd-devel openssl-devel sqlite-devel zlib-devel libedit-devel pcre-devel libtool libtool-ltdl-devel systemtap-sdt-devel libacl-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
--> 衝突を処理しています: httpd24u-2.4.12-5.ius.centos6.i686 は httpd < 2.4.12 と衝突しています
--> 衝突を処理しています: httpd24u-devel-2.4.12-5.ius.centos6.i686 は httpd-devel < 2.4.12 と衝突しています
--> 衝突を処理しています: httpd24u-tools-2.4.12-5.ius.centos6.i686 は httpd-tools < 2.4.12 と衝突しています
--> 依存性解決を終了しました。
エラー: httpd24u-devel conflicts with httpd-devel-2.2.15-39.el6.centos.i686
エラー: httpd24u conflicts with httpd-2.2.15-39.el6.centos.i686
エラー: httpd24u-tools conflicts with httpd-tools-2.2.15-39.el6.centos.i686
       
      
「ソースパッケージ」からのインストールに変更してみます。
「IUS」リポジトリにはアーカイブがあるのでそこから「5.6.7」をダウンロードしました。
 今度は「rpmbuild」コマンド、オプション「--rebuild」(SRPMを元にRPMを作成する) 、「--clean」(パッケージが作成された後にビルドツリーを削除する)を実施すると、多数の必要パッケージを提示されてしまいました。
 その中に「httpd-devel < 2.4 は php56u-5.6.7-1.ius.el6.i386 に必要とされています」という警告があります。これはつまり、すでにインストールしている「apache 2.4.12」がバージョン高すぎだと言っているようです。これもだめということでしょう。

■「apache 2.4.12」に対応している「PHP」のバージョンを探す。

       
[mockbuild@centos ~]$ ls
download  rpmbuild ←作成されていた。

[mockbuild@centos rpmbuild]$ ls
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS ←確認してみた。
[mockbuild@centos SOURCES]$ ls
macros.php                     php-5.4.0-dlopen.patch     php-5.6.0-noNO.patch     php-fpm.service
opcache-default.blacklist      php-5.4.0-phpize.patch     php-5.6.0-oldpcre.patch  php-fpm.sysconfig
opcache.ini                    php-5.4.7-libdb.patch      php-5.6.7-strip.tar.xz   php.conf
php-5.2.0-includedir.patch     php-5.4.7-odbctimer.patch  php-fpm-www.conf         php.ini
php-5.2.4-embed.patch          php-5.4.8-ldap_r.patch     php-fpm.conf             php.modconf
php-5.3.0-recode.patch         php-5.4.9-fixheader.patch  php-fpm.init             php.ztsmodconf
php-5.3.1-systzdata-v10.patch  php-5.4.9-phpinfo.patch    php-fpm.logrotate        strip.sh

[mockbuild@centos SPECS]$ ls
php56u.spec ←「SPECファイル」

[mockbuild@centos SPECS]$ less php56.spec
%global base_ver 5.6
%global real_name php
%global ius_suffix 56u
%global phpfpm_user php-fpm
%global phpfpm_group %{phpfpm_user}
%global phpfpm_home %{_localstatedir}/lib/php-fpm

%if 0%{?rhel} >= 7
%global with_systemd 1
%global _macrosdir %{_rpmconfigdir}/macros.d
%global _rundir /run
%else
%global with_systemd 0
%global _macrosdir %{_sysconfdir}/rpm
%global _rundir %{_localstatedir}/run
%endif

# API/ABI check
%global apiver      20131106
%global zendver     20131226
%global pdover      20080721
# Extension version
%global opcachever  7.0.4-dev

# Use for first build of PHP (before pecl/zip and pecl/jsonc)
%global php_bootstrap   0

# Adds -z now to the linker flags
%global _hardened_build 1

# version used for php embedded library soname
%global embed_version 5.6

%global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock)
# Regression tests take a long time, you can skip 'em with this
%if %{php_bootstrap}
%global runselftest 0
%else
%{!?runselftest: %global runselftest 1}
%endif

# Use the arch-specific mysql_config binary to avoid mismatch with the
# arch detection heuristic used by bindir/mysql_config.
%global mysql_config %{_libdir}/mysql/mysql_config

# Build ZTS extension or only NTS
%global with_zts      1

%if 0%{?__isa_bits:1}
%global isasuffix -%{__isa_bits}
%else
%global isasuffix %nil
%endif

# /usr/sbin/apsx with httpd < 2.4 and defined as /usr/bin/apxs with httpd >= 2.4
%{!?_httpd_apxs:       %{expand: %%global _httpd_apxs       %%{_sbindir}/apxs}}
%{!?_httpd_mmn:        %{expand: %%global _httpd_mmn        %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo 0-0)}}
%{!?_httpd_confdir:    %{expand: %%global _httpd_confdir    %%{_sysconfdir}/httpd/conf.d}}
# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4
%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}}
%{!?_httpd_moddir:     %{expand: %%global _httpd_moddir     %%{_libdir}/httpd/modules}}
%{!?_httpd_contentdir: %{expand: %%global _httpd_contentdir /var/www}}

%global with_dtrace 1

%global with_litespeed 1

# build with system libgd
%if 0%{?fedora} < 20
%global  with_libgd 0
%else
%global  with_libgd 1
%endif

%global with_zip     1
%global with_libzip  0

%if 0%{?fedora} < 18 && 0%{?rhel} < 7
%global db_devel  db4-devel
%else
%global db_devel  libdb-devel
%endif

Summary: PHP scripting language for creating dynamic web sites
Name: %{real_name}%{?ius_suffix}
Version: 5.6.7
Release: 1.ius%{?dist}
# All files licensed under PHP version 3.01, except
# Zend is licensed under Zend
# TSRM is licensed under BSD
License: PHP and Zend and BSD
Group: Development/Languages
URL: http://www.php.net/

# Need to download official tarball and strip non-free stuff
# wget http://www.php.net/distributions/php-%{version}.tar.xz
# ./strip.sh %{version}
Source0: php-%{version}-strip.tar.xz
Source1: php.conf
Source2: php.ini
Source3: macros.php
Source4: php-fpm.conf
Source5: php-fpm-www.conf
Source6: php-fpm.service
Source7: php-fpm.logrotate
Source8: php-fpm.sysconfig
Source9: php.modconf
Source10: php.ztsmodconf
Source11: strip.sh
Source12: php-fpm.init

# Configuration files for some extensions
Source50: opcache.ini
Source51: opcache-default.blacklist

# Build fixes
Patch5: php-5.2.0-includedir.patch
Patch6: php-5.2.4-embed.patch
Patch7: php-5.3.0-recode.patch
Patch8: php-5.4.7-libdb.patch

# Fixes for extension modules
# https://bugs.php.net/63171 no odbc call during timeout
Patch21: php-5.4.7-odbctimer.patch

# Functional changes
Patch40: php-5.4.0-dlopen.patch
Patch42: php-5.3.1-systzdata-v10.patch
# See http://bugs.php.net/53436
Patch43: php-5.4.0-phpize.patch
# Use -lldap_r for OpenLDAP
Patch45: php-5.4.8-ldap_r.patch
# Make php_config.h constant across builds
Patch46: php-5.4.9-fixheader.patch
# drop "Configure command" from phpinfo output
Patch47: php-5.4.9-phpinfo.patch

# Upstream fixes (100+)

# https://bugs.php.net/bug.php?id=68423
#Patch101: php-5.6.3-load-all-pools.patch

# https://bugs.php.net/bug.php?id=68421
#Patch102: php-5.6.3-access.format.patch

# https://bugs.php.net/bug.php?id=68420
#Patch103: php-5.6.3-listen-localhost.patch

# Security fixes (200+)

# Fixes for tests (300+)
# Revert changes for pcre < 8.34
Patch301: php-5.6.0-oldpcre.patch
# see https://bugzilla.redhat.com/971416
Patch302: php-5.6.0-noNO.patch


BuildRequires: bzip2-devel, curl-devel >= 7.9
BuildRequires: pam-devel
%if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
%else
BuildRequires: httpd-devel
%endif
BuildRequires: libstdc++-devel, openssl-devel
BuildRequires: sqlite-devel >= 3.6.0
BuildRequires: zlib-devel, smtpdaemon, libedit-devel
BuildRequires: pcre-devel >= 6.6
BuildRequires: bzip2, perl, libtool >= 1.4.3, gcc-c++
BuildRequires: libtool-ltdl-devel
%if %{with_libzip}
BuildRequires: libzip-devel >= 0.11
%endif
%if %{with_dtrace}
BuildRequires: systemtap-sdt-devel
%endif
---省略---
       
      
「mockbuild」ユーザーで「rpmbuild」コマンドをしようしたら、ホームディレクトリ内に「rpmbuild」ディレクトリが作成されていました。
 前項目でSPECファイルが無いと警告されたときに作られたのかも知れません。
 中にもディレクトリが複数作成されており、中を確認してみると「SOURCES」に多数のファイルと「SPECS」に「php56u.spec」なるファイルを確認しました。
 見てもさっぱりわかりませんが、以下関係ありそうな文章を発見しました。
# /usr/sbin/apsx with httpd < 2.4 and defined as /usr/bin/apxs with httpd >= 2.4

「apache」が2.4より低いバージョンなら「/usr/sbin/apsx」
「apache」が2.4以上のバージョンなら「/usr/bin/apsx」
ということでしょうか。

# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4

「apache」が2.4より低いバージョンなら「/etc/httpd/conf.d」
「apache」が2.4以上のバージョンなら「/etc/httpd/conf.modules.d」
ということでしょうか。

%if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
%else
BuildRequires: httpd-devel
%endif

 うーん。「rhel」とは「Redhat」のことですかね?
 バージョンはCentOSと同じだと聞いたことがありますが、とするとOSのバージョンが7より低いバージョンなら「httpd-develは2.4より低いバージョンを」そうでなければ「httpd-develのバージョンに指定なし」つまり、「CentOS6.6」の場合「httpd-devel」は2.4より低いバージョンということになりますかね。

 うーーん。「httpd」について、2.4以上についても説明がある以上この「PHP5.6系」は「apache 2.4.12」で動くのではないのかなぁ……。あ、でも「CentOS7」の場合の説明なのかな。わからない。
 もう少しバージョン違いのSPECファイルの確認をしてみることにします。

■複数バージョンのSPECファイル確認。

       
[mockbuild@centos download]$ ls
5520  5521  5522  5523  564  565  566-1  566-2  567

[mockbuild@centos 567]$ rpm2cpio php56u-5.6.7-1.ius.centos6.src.rpm | cpio -idv php56u.spec
23021 blocks
       
      
 PHP「5.5系」「5.6系」の新しいバージョンから遡っていくつかのソースパッケージを作成したディレクトリにダウンロードしました。
 それらのソースパッケージから「rpm2cpioとcpio」コマンドを使用して「SPECファイル」を取り出してそれぞれ確認してみました。
バージョン SPECファイル内容抜粋 可能/不可能
5.6.7 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.6.6-2 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.6.6-1 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.6.5 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.6.4 BuildRequires: httpd-devel >= 2.0.46-1
BuildRequires: httpd
可能
5.5.23 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.5.22 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.5.21 %if 0%{?rhel} < 7
BuildRequires: httpd-devel < 2.4
不可能
5.5.20 BuildRequires: httpd-devel >= 2.0.46-1 可能
「BuildReqires」とはRPMをビルドする上でインストールされている必要があるRPMを指定するとのこと。
 バージョン「5.6.4」と「5.5.20」は「httpd-devel >= 2.0.46-1」とあります。これなら条件として「apache 2.4.12」も満たしているということでしょうか。
 ということで、より新しい「PHP5.6.4」ソースパッケージをビルドしてみようと思います。


nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 1

Online cialis

沒有醫生的處方
tesco price cialis http://cialisyoues.com/ Tadalafil 20mg
by Online cialis (2018-04-14 00:53) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

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