我正在创建各种PHP扩展的rpms,以在PHP7之后手动安装,我自己已经为此构建了一个rpm(本例中为7.1.4)。为什么rpmbuild在spec文件中没有包含手动的'Requires'指令?
在我的一个特定的扩展(在这种情况下gd)spec文件我已经指定,PHP是一个必需的软件包。但是,当调用rpmbuild时,它不会在其输出中显示此需求,此外,可以在不安装PHP7的情况下安装rpm gd。此外,当我这样做时,尽管gd被告知写入一个不存在的php.ini文件,但我没有得到任何错误。
这里是我的gd.spec文件:
%define ext_name gd
%define ext $RPM_BUILD_ROOT/usr/local/lib/php/extensions/no-debug-zts-20160303
%define sodir modules/%{ext_name}.so
%define head $RPM_BUILD_ROOT/usr/local/include/php/ext
%define phpini /usr/local/lib/php.ini
Name: php-gd
Summary: PHP gd extension
Group: Development/Languages
Version: 7.1.4
Release: 1
Source: php-gd-7.1.4.tar.gz
URL: http://www.php.net/
License: PHP
Packager: PHP Group
BuildRoot: /home/john/rpmbuild/BUILDROOT/php-gd-7.1.4
Requires: php
%description
PHP gd extension.
%prep
%setup -q
%build
phpize
./configure
make
%install
install -m 755 -d %{ext}
install -m 644 %{sodir} %{ext}
install -m 755 -d %{head}/%{ext_name}/libgd
install -m 644 *h %{head}/%{ext_name}
install -m 644 libgd/*h %{head}/%{ext_name}/libgd
%post
echo 'extension=%{ext_name}.so' >> %{phpini}
%postun
sed -i.bak '/extension=%{ext_name}.so/d' %{phpini}
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root)
/usr/local/lib/php/extensions/no-debug-zts-20160303/%{ext_name}.so
/usr/local/include/php/ext
我想变化的“要求”指令,如指定特定的版本,甚至干脆尝试了不同的包装,纳米技术,只是为了看看是否奏效,但rpmbuild从来没有拿起它。
这是的rpmbuild输出的尾端:
...
Processing files: php-gd-7.1.4-1.x86_64
Provides: php-gd = 7.1.4-1 php-gd(x86-64) = 7.1.4-1
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(postun): /bin/sh
Processing files: php-gd-debuginfo-7.1.4-1.x86_64
Provides: php-gd-debuginfo = 7.1.4-1 php-gd-debuginfo(x86-64) = 7.1.4-1
Requires(rpmlib): rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/john/rpmbuild/BUILDROOT/php-gd-7.1.4-1.x86_64
...
这表明的rpmbuild显然做的东西“需要”。我还安装了一个用spec文件构建的Apache的rpm,在那个例子中,'Requires'指令被注意到了。