由于 Xapian 已从 Ubuntu 存储库中删除,我正尝试按照此处的说明构建自己的 .deb:
http://article.gmane.org/gmane.comp.search.xapian.general/8855
我只能通过省略“rm debian/control”来使事情在最初几秒钟后继续进行,但如果我这样做,看起来 Python 和 Ruby 绑定正在正确构建和传递其版本的 smoketest。
但是,构建的 PHP 部分失败并出现以下错误:
/home/charlie/xapian-bindings-1.2.8/php/smoketest.php:38: include(xapian.php): failed to open stream: No such file or directory
FAIL: smoketest.php
/home/charlie/xapian-bindings-1.2.8/php/php5/ 中有一个 xapian.php 文件,但是如果我将其复制到 /home/charlie/xapian-bindings-1.2.8/php/ 或在 smoketest.php 中更改它的路径,则构建会在开始时失败:
dpkg-source: error: aborting due to unexpected upstream changes
不幸的是,我脱离了从源代码构建的舒适区。有人有什么想法吗?
编辑詹姆斯的回答:
如果我严格按照说明操作,构建会很顺利。我最初在测试虚拟机上构建了它,但由于 PHP 本身没有安装,因此无法构建 PHP 包。很明显,这是个陷阱,但值得一提。
安装产生以下错误:
Setting up php5-xapian (1.2.8-1) ...
Processing triggers for libapache2-mod-php5 ...
dpkg (subprocess): unable to execute installed post-installation script (/var/lib/dpkg/info/libapache2-mod-php5.postinst): Permission denied ssion denied
dpkg: error processing libapache2-mod-php5 (--install):
subprocess installed post-installation script returned error exit status 2
Errors were encountered while processing:
libapache2-mod-php5
它只是一个用于重新启动 Apache 的脚本。在运行 sudo dpkg -i php5-xapian_*.deb 之前停止 Apache 可避免出现错误。Xapian 现在显示在 phpinfo() 中。工作完成了。谢谢。
答案1
问题在于,Debian 构建系统在与源文件不同的目录中构建,而这种方法目前在运行 PHP 绑定 smoketest 时存在问题。在正确修复此问题之前,您可以通过运行以下命令来使一切正常运行(改编自有关 Debian 和 Ubuntu 的 PHP 绑定的 Xapian 常见问题解答,基于您已经找到的信息):
sudo apt-get build-dep xapian-bindings
sudo apt-get install php5-dev php5-cli devscripts
apt-get source xapian-bindings
cd xapian-bindings-1.2.*
rm -f debian/control debian/*-stamp
env PHP_VERSIONS=5 debian/rules maint
sed -i 's/include_path=php5$/include_path=$(srcdir)\/php5/' php/Makefile.in
dpkg-source --commit
此时,系统会提示您输入补丁名称(使用类似 fix-php-buildtests 的名称),然后将其转储到编辑器中以记录该补丁,但您不必关心这一点,因此只需保存并退出编辑器即可。然后:
debuild -e PHP_VERSIONS=5 -us -uc
cd ..
sudo dpkg -i php5-xapian_*.deb
您已经完成。
处理此问题的邮件列表主题尚未出现在 GMane 中,但是可以在 Xapian mailman 档案中找到。