PHP 7.1용 .deb 패키지 생성

PHP 7.1용 .deb 패키지 생성

원하는 PHP 모듈을 사용하여 데비안용 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

기존에 사용하겠습니다데비안 PHP 7.1 패키지대신에...

어쨌든 귀하의 질문에 대답하자면 귀하가 설명하는 패키징 프로세스가 작동합니다. 올바르게 답변하려면 귀하 debian/control와 파일을 자세히 살펴봐야 debian/rules하지만, 귀하가 보는 오류는 쉽게 수정할 수 있습니다. PHP 소스 코드에서는 이를 사용하지 않으며 변수가 DESTDIR필요합니다 INSTALL_ROOT. 존재하다 debian/rules:

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

바이너리 패키지를 만드는 것 같기 때문입니다 php.

관련 정보