원하는 PHP 모듈을 사용하여 데비안용 PHP 7.1 .deb 패키지를 만들고 싶습니다.
내가 따라온 단계는 다음과 같습니다.
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을 컴파일할 수 있습니다. 패키지를 만들고 싶다면 다음 단계를 따르세요.
포장 준비:
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
패키지:
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
결과:
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
- 질문
포장 과정이 효과적인가요?
그렇다면 오류의 원인은 무엇입니까?
편집: @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
.