간단한 Debian 패키지를 빌드하려고 하는데 루트 사용자를 사용하여 다음 단계를 수행했습니다.
먼저 업스트림 tarball을 다운로드한 후 다음을 수행했습니다.
$ mv hithere-1.0.tar.gz hithere_1.0.orig.tar.gz
그 다음에:
$ tar xf hithere_1.0.orig.tar.gz
이후:
$ cd hithere-1.0
$ dch --create -v 1.0-1 --package hithere
$ cd debian/
$ rm *.ex *.EX
그런 다음 "제어 파일"과 "저작권 파일"을 편집했습니다.
$ nano control
$ nano copyright
$ cd ..
$ debuild -S
마지막 명령 후에 다음 오류가 생성되었습니다.
root@mehrnaz-MS-A934:/home/fabdollahei/hithere-1.0# debuild -S dpkg-buildpackage -rfakeroot -d -us -uc -S
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: source package hithere
dpkg-buildpackage: source version 1.0-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: source changed by root <[email protected]>
dpkg-source --before-build hithere-1.0
dpkg-source: error: syntax error in hithere-1.0/debian/control at line 15: block lacks the 'Package' field
dpkg-buildpackage: error: dpkg-source --before-build hithere-1.0 gave error exit status 255
dpkg-source: error: syntax error in hithere-1.0/debian/control at line 15: block lacks the 'Package' field
dpkg-buildpackage: error: dpkg-source --before-build hithere-1.0 gave error exit status 255
debuild: fatal error at line 1364:
dpkg-buildpackage -rfakeroot -d -us -uc -S failed
이 치명적인 오류를 어떻게 제거할 수 있습니까?
답변1
메시지에는 dpkg-buildpackage
명령이 실패했다고만 나와 있습니다. 이 메시지를 읽으면 문제가 무엇인지 즉시 알 수 있습니다.
dpkg-source: error: syntax error in hithere-1.0/debian/control at line 15:
block lacks the 'Package' field
dpkg-buildpackage: error: dpkg-source --before-build hithere-1.0 gave error exit status 255
이 문제(및 나중에 발생할 수 있는 다른 문제)를 해결하면 제대로 작동할 것입니다.
답변2
dpkg-buildpackage -rfakeroot -d -uc -us -S failed
방법;
dpkg-buildpackage
실행할 명령의 이름입니다. dpkg-buildpackage는 데비안 소프트웨어 패키지 또는 ".debs"를 빌드하기 위한 도구입니다.-rfakeroot
명령의 첫 번째 매개변수이며 dpkg-buildpackage에 루트 권한이 있는 것처럼 작동하도록 dpkg-buildpackage에 지시합니다. 매뉴얼 페이지에서 "dpkg-buildpackage가 빌드 프로세스의 일부를 루트로 실행해야 하는 경우 실행되는 명령 앞에 붙습니다"(이 경우에는 fakeroot). (사용하지 마세요su
).- 이
-d
플래그는 "빌드 종속성 및 충돌을 확인하지 않음"을 의미합니다. -uc
각각-us
변경된 파일이나 소스 코드에 서명하지 않음을 의미합니다.-S
이는 소스 코드 패키지를 구축하는 것을 의미합니다. 데비안 패키지는 바이너리와 소스 코드라는 두 가지 유형으로 제공됩니다. 바이너리는 소스 패키지에서 빌드됩니다.- "실패"는 명령이 실패했음을 의미하지만 여러분도 알고 계실 것 같습니다. :-)