为 PHP 7.1 创建 .deb 包

为 PHP 7.1 创建 .deb 包

我想使用我想要的 PHP 模块为 Debian 创建 PHP 7.1 的 .deb 包。

这是我遵循的步骤。

  1. 下载 PHP 源

    wget http://fr2.php.net/get/php-7.1.7.tar.bz2/from/this/mirror
    tar xvf mirror
    mv mirror php_7.1.7.orig.tar.bz2
    cd php-7.1.7/
    

这里我可以编译PHP 7.1,没问题。如果我想构建包,我会按照以下步骤操作:

  1. 准备包装:

    export DEBFULLNAME="Shanx Shanxou"
    dh_make -e [email protected]
    apt-get install debhelper cdbs lintian build-essential fakeroot devscripts pbuilder dh-make debootstrap
    
    vim debian/control
    

在该文件中,我修改了该Build-Depends:行:

Build-Depends: debhelper (>= 9), autotools-dev, mawk, file, libxml2-dev:amd64, libxml2:amd64, bison, perl-modules, libfakeroot:amd64, perl, mime-support, libmagic1:amd64    , autoconf, build-essential, git-core, libbz2-dev, libcurl4-openssl-dev, libfreetype6-dev, libicu-dev, libjpeg-dev, libmcrypt-dev, libpng-dev, libpspell-dev, libreadline    -dev, libssl-dev, libxml2-dev, pkg-config, libc-client-dev, libkrb5-dev, libpq-dev, libxslt-dev
  1. 包装:

    debuild -S -sa --lintian-opts -i
    cd ..
    pbuilder create
    pbuilder update --extrapackages "libc-client-dev pkg-config libssl-dev libreadline-dev libpspell-dev libpng-dev libmcrypt-dev libjpeg-dev libfreetype6-dev libcurl4-openssl-dev libbz2-dev git-core mime-support libfakeroot bison libkrb5-dev libxml2-dev  debhelper"
    pbuilder build *.dsc
    
  2. 结果:

    mkdir: cannot create directory '/usr/lib/x86_64-linux-gnu/extensions': Permission denied
    mkdir: cannot create directory '/usr/lib/x86_64-linux-gnu/extensions/no-debug-non-zts-20160303': No such file or directory
    Makefile:160: recipe for target 'install-modules' failed
    make[1]: *** [install-modules] Error 1
    make[1]: Leaving directory '/tmp/buildd/php-7.1.7'
    dh_auto_install: make -j1 install DESTDIR=/tmp/buildd/php-7.1.7/debian/php AM_UPDATE_INFO_DIR=no returned exit code 2
    debian/rules:22: recipe for target 'binary' failed
    make: *** [binary] Error 2
    dpkg-buildpackage: error: fakeroot debian/rules binary gave error exit status 2
    E: Failed autobuilding of package
    I: unmounting dev/pts filesystem
    I: unmounting run/shm filesystem
    I: unmounting proc filesystem
    I: cleaning the build env
    I: removing directory /var/cache/pbuilder/build//14827 and its subdirectories
    

但是目录和文件已经由打包过程创建了:

# ls /usr/lib/x86_64-linux-gnu/extensions
no-debug-non-zts-20160303
  1. 问题

我的包装流程有效吗?

如果是这样,错误的原因可能是什么?

编辑:@Stephen Kitt 的回答成功了。只是为了不这样做,您必须使用实际的表格(而不是空格)并且不要忘记debuild -S -sa --lintian-opts -i修改后重新执行。

编辑bis:这里有新问题安装创建的 .deb 包

答案1

我会使用现有的Debian PHP 7.1 软件包反而...

无论如何,为了回答您的问题,您所描述的包装过程是有效的。为了正确回答,我们需要详细查看您的debian/controldebian/rules文件,但是您看到的错误很容易修复:PHP 源代码不使用DESTDIR,它需要一个INSTALL_ROOT变量。在debian/rules

override_dh_auto_install:
        dh_auto_install -- INSTALL_ROOT=$(CURDIR)/debian/php

因为您似乎正在构建一个php二进制包。

相关内容