비로컬 패키지

비로컬 패키지

저는 데비안 사용자는 아니지만 제가 작성한 이 커널 패치를 테스트하려면 데비안 환경이 필요하며, 말할 필요도 없이 지난 며칠 동안 데비안에서 사용자 정의 커널을 구축하는 방법을 알아내려고 노력했습니다. , 그리고 나는 좌절감이 끝이 없습니다 ...

사용자 정의 커널을 성공적으로 설치했지만 구성 옵션을 변경해야 합니다. 실행한 후 make -j5 deb-pkg다음 오류가 발생합니다.

dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/stackdelta' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/stackusage' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tags.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tools-support-relr.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tracing/draw_functrace.py' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/tracing/ftrace-bisect.sh' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/ver_linux' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/scripts/xz_wrap.sh' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-headers/usr/src/linux-headers-5.8.0+/tools/objtool/objtool: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-headers/usr/src/linux-headers-5.8.0+/tools/objtool/objtool' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image-dbg/usr/lib/debug/lib/modules/5.8.0+/vmlinux: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-image-dbg/usr/lib/debug/lib/modules/5.8.0+/vmlinux' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image-dbg/usr/share/doc/linux-image-5.8.0+-dbg/changelog.Debian.gz: binary file contents changed
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/postinst' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/postrm' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/preinst' will not be represented in diff
dpkg-source: warning: executable mode 0755 of 'debian/linux-image/DEBIAN/prerm' will not be represented in diff
dpkg-source: error: cannot represent change to debian/linux-image/boot/vmlinuz-5.8.0+: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.alias.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.builtin.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.builtin.modinfo: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.dep.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/lib/modules/5.8.0+/modules.symbols.bin: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-image/usr/share/doc/linux-image-5.8.0+/changelog.Debian.gz: binary file contents changed
dpkg-source: error: cannot represent change to debian/linux-libc-dev/usr/share/doc/linux-libc-dev/changelog.Debian.gz: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files: 
 .clang-format
 .cocciconfig
 .config.old
 .get_maintainer.ignore
 .mailmap
 .version
 CREDITS
 MAINTAINERS
 Module.symvers
 README
 u_f.patch
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: error: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -i.git -b . subprocess returned exit status 1
make[1]: *** [scripts/Makefile.package:77: deb-pkg] Error 1
make: *** [Makefile:1520: deb-pkg] Error 2

이 문제를 어떻게 해결할 수 있을까요...?

답변1

정말,dpkg 소스이전에 빌드된 일부 파일은 무시되지 않으며 다음과 같은 오류가 표시됩니다.

make -j `getconf _NPROCESSORS_ONLN` deb-pkg LOCALVERSION=-custom

이를 통해 깨끗한 복제 후에 한 번만 빌드할 수 있습니다. 다음 문제로 인해 후속 빌드가 항상 실패합니다.디벅

그러므로Bindb-pkg 만들기도움이 될 다음 빌드 명령은 다음과 같습니다.

make -j `getconf _NPROCESSORS_ONLN` bindeb-pkg LOCALVERSION=-custom

훌륭하게 작동했습니다. 이제 빌드가 성공했습니다.

답변2

이 답변을 조사하는 동안 네이티브가 아닌 패키지에 대한 이 질문에 답변했지만 linux-signed-amd64소스 패키지(아마도 빌드 중인 패키지)가 네이티브 패키지라는 것을 알게 되었습니다. 불행히도 이로 인해 나에게비로컬 패키지부분적으로는 그렇지만 이 문제가 발생하는 모든 사람에게 여전히 유용할 것이라고 생각합니다.

비로컬 패키지

일반적으로 이 문제가 발생하는 이유는 기본이 아닌 패키지에 추적되지 않은 변경 사항을 적용했기 때문입니다. 이는 debian/source/format다음과 같은 경우에 적용됩니다 3.0 (quilt). 예를 들어:

apt source <package>
cd <package>_<version>
# make changes to sources
dpkg-buildpackage

apt source원본 업스트림 tarball( +dfsg릴리스에 없는 경우 원본 작성자의 버전)을 다운로드하고 압축을 푼 다음 데비안 패키징 내용( debian/디렉토리에 있음)을 추가합니다.

dpkg-buildpackage(or )를 사용할 debuild때 가장 먼저 하는 일은 이를 호출하여 dpkg-source패키지 외부의 모든 것이 debian/원래 업스트림 타르볼과 정확히 일치하는지 확인하는 것입니다. 이렇게 하면 데비안의 누구도 문서화되지 않은 변경 사항을 추가하지 않습니다.

업스트림 콘텐츠에 대한 모든 변경 사항은 패치로 독립적으로 적용되어야 합니다. quilt이 목적으로 사용됩니다. 확인이 이루어진 후 패치가 저장 debian/patches되고 적용됩니다. dpkg-source이렇게 하면 배포별 콘텐츠가 올바르게 문서화됩니다. 또한 패치 형식에 메타 콘텐츠(또는 헤더)를 위한 공간이 있으므로 어떤 패치가 업스트림(원래 개발자에게)으로 전달되었는지 추적하는 데 도움이 됩니다.


이 문제가 발생할 수 있는 또 다른 방법은 빌드가 소스 코드에서 발생하는 경우입니다(즉, 빌드 아티팩트가 빌드 디렉터리에 격리되지 않거나 스크립트가 소스 파일을 내부에서 수정함을 의미). 모든 것을 원래 상태로 복원하는 것이 가능하기를 바랍니다 debuild -T clean. 그렇지 않으면 수동으로 수행해야 합니다.


네이티브 패키지

이 예에서는 apt source네이티브 linux-signed-amd64_*.tar.xz소스 코드 패키지를 다운로드한 후 압축을 풉니다. debuild또는 를 사용할 때 dpkg-buildpackage일반적으로 소스 패키지와 모든 바이너리 패키지를 생성합니다. 소스 패키지가 이미 존재하므로 debuild이 단계를 건너뛰되 소스 패키지가 현재 소스 트리와 일치하는지 확인하세요. 이것이 모두 실패하는 곳입니다. 가지고 있는 소스 패키지를 교체하는 대신 오류가 발생하도록 선택합니다. 소스 패키지를 제거( 사용 debuild -T clean)하면 이 충돌이 해결됩니다.

답변3

/usr/src에 설치된 .deb 파일과 디렉터리로 인해 오류가 발생한 것 같습니다 make deb-pkg. 해당 파일을 제거하여 문제를 해결했고 이제 정상적으로 컴파일되는 것 같습니다.

관련 정보