mksh
재현 가능한 방식으로 패키지를 빌드할 수 있는지 확인하고 싶습니다 . 나는 노력하고있다
apt build-dep mksh
apt source mksh
cd mksh; dpkg-buildpackage -uc -us
cd ..; sha256sum <freshly build dep>
내가 지금 이걸 하면
apt download mksh
다운로드한 deb의 체크섬을 로컬에서 만든 데비안 패키지와 비교하면 체크섬이 다릅니다(deb에 서명하지 않았을 것으로 예상)
이러한 체크섬을 일치시키려면 어떻게 해야 합니까?
답변1
소스 mksh
패키지는 재현 가능하게 빌드 가능합니다..deb
, 즉 빌드 환경을 재현할 수 있는 경우 특정 패키지를 다시 생성할 수 있음을 의미합니다. 이 정보는 저장되었습니다.buildinfo
파일 에, 그리고데비안 스냅샷, 주어진 을 구축하는 데 사용하기 위해 검색할 수 있습니다 .deb
.
지금,.buildinfo
Debian 저장소의 바이너리 패키지와 함께 파일이 릴리스되지 않습니다., 하지만그들은 출판되었다존재하다buildinfos.debian.net, .buildinfo
현재 Debian 11 버전의 파일이 포함되어 있습니다(mksh
예를 들어 amd64
버전). 이를 사용하면 mksh
특정 바이너리 패키지에 대한 빌드 환경이 무엇인지 확인한 다음 이를 재현해 볼 수 있습니다.
여기에는 또 다른 미묘함이 있습니다. mksh
데비안 11의 현재 패키지는 binNMU인데, 소스 코드는 그렇지 않습니다.정확히게시된 패키지 소스와 일치합니다. 기존 바이너리 패키지를 재현하려면 추가 binNMU changelog
(예를 들어 changelog.Debian.amd64.gz
amd64
패키지) 에는 동일한 내용이 있습니다.
mksh (59c-9+b2) sid; urgency=low, binary-only=yes
* Binary-only non-maintainer upload for amd64; no source changes.
* Rebuild for outdated Built-Using
-- amd64 / i386 Build Daemon (x86-ubc-01) <[email protected]> Thu, 05 Aug 2021 11:52:19 +0000
당신이할 수 있는주어진 빌드 환경을 재현하면 생성된 .deb
파일은 정확히 동일해야 합니다. 데비안에 배포된 바이너리 패키지는 자체적으로 서명되지 않습니다.이를 설명하는 메타데이터는 다음과 같습니다..
답변2
당신은 할 수 없습니다. 기본 데이터가 다르기 때문에 계산된 체크섬도 달라집니다. 동일한 체크섬을 갖는 두 값을 찾는 것은 어려운 문제입니다.