. Мне нужно включить поддержку POSIX ACL в PHP-FPM. Я могу получить список ACL с помощью getfacl
и установить их с помощью setfacl -m
из оболочки, чтобы мое ядро поддерживало его. Я скачал исходники PHP7.0_7.0.19 с
$ cd /tmp/
$ apt-get source php7.0
и обновил файл debian / rules
, чтобы включить поддержку ACL:
$ cd php7.0-7.0.19/
$ vim debian/rules
, а затем около строки 238 ( export fpm_config = \
) Я добавил - with-fpm-acl = yes
, так что эта конфигурация выглядит так:
export fpm_config = \
--prefix=/usr --enable-fpm --enable-cli --disable-cgi --disable-phpdbg \
--sysconfdir=/etc/php/$(PHP_NAME_VERSION)/fpm \
--with-fpm-user=www-data --with-fpm-group=www-data \
--with-config-file-path=/etc/php/$(PHP_NAME_VERSION)/fpm \
--with-config-file-scan-dir=/etc/php/$(PHP_NAME_VERSION)/fpm/conf.d \
--with-fpm-acl=yes \
$(COMMON_CONFIG) \
--with-libevent-dir=/usr \
$(CONFIGURE_SYSTEMD)
и я запускаю
dpkg-buildpackage -us -uc | tee /tmp/php_build_log.log
, но получаю эту ошибку:
configure: exit 1
cd /tmp/php7.0-7.0.19
debian/rules:327: recipe for target 'override_dh_auto_configure-arch' failed
make[1]: Leaving directory '/tmp/php7.0-7.0.19'
debian/rules:275: recipe for target 'binary' failed
OK, found the perpetratorsits. Первый:
[...]
checking sys/acl.h usability... no
checking sys/acl.h presence... no
checking for sys/acl.h... no
checking for acl_free in -lacl... no
[...]
решение
$ apt-file search /usr/include/sys/acl.h
libacl1-dev: /usr/include/sys/acl.h
$ sudo apt-get install libacl1-dev
следующее (думаю, это была главная причина неудачи)
## --------- ##
## Platform. ##
## --------- ##
hostname = eva02
uname -m = x86_64
uname -r = 4.9.0-3-amd64
uname -s = Linux
uname -v = #1 SMP Debian 4.9.30-2+deb9u2 (2017-06-26)
/usr/bin/uname -p = unknown
/bin/uname -X = unknown
/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown
Так как в ошибке упоминалось override_dh_auto_configure-arch
, Я думаю, скрипт правил не смог определить архитектуру, так как /bin/arch
не существовал, а /usr/bin/arch
не имеет переключателя -k
, но вызов /usr/bin/arch
дает x86_64, так что я сделал symlink
$ sudo ln -s /usr/bin/arch /bin/arch
и теперь
$ debuild
успешно закончил и подписал deb-пакеты.