我试图在MACOS 10.12.6上从源代码安装xapian。 我能够构建源但无法安装它,
错误是:
/bin/sh ../libtool --mode=install /usr/bin/install -c xapian.la
'/usr/lib/php/extensions/no-debug-non-zts-20131226'
libtool: install: /usr/bin/install -c .libs/xapian.so
/usr/lib/php/extensions/no-debug-non-zts-20131226/xapian.so
install: /usr/lib/php/extensions/no-debug-non-zts-20131226/xapian.so:
Operation not permitted
make[5]: *** [install-phpextLTLIBRARIES] Error 71
make[4]: *** [install-am] Error 2
我在xapian目录中执行了以下步骤:
./bootstrap
./configure --without-perl --without-tcl --prefix='/usr/local'
make
sudo make install
如果有人可以建议如何解决此错误,那会很棒。
答案 0 :(得分:1)
最近的macOS版本附带了一个名为“系统完整性保护”(或SIP)的东西,它可以阻止您(甚至是root用户)在操作系统的某些位置安装文件。您有三个主要选项:
Turn off SIP(这非常激烈,大多数人都不想这样做。)
将PHP扩展安装到自定义位置:sudo make install PHP_EXTENSION_DIR=$HOME/php-local
。然后,您需要设置PHP的extension_dir
来查找它,类似于php -d extension_dir=$HOME/php-local -r 'require_once("xapian.php");'
。在这种情况下,您可能希望将PHP_EXTENSION_DIR
设置为/usr/local/lib/php/extensions
。
从homebrew安装PHP:brew tap homebrew/homebrew-php
并针对该版本构建Xapian绑定(这可能需要付出更多努力)。
当然,如果您不需要PHP绑定,您可以像禁用Perl和TCL绑定(在macOS上具有相同问题)一样禁用构建它们:./configure --without-perl --without-tcl --without-php --prefix=/usr/local
。