수정하고 다시 컴파일 한 패키지에 올바르게 서명하려면 어떻게해야합니까?


20

백 포트 버전의 nginx 를 가져 와서 uwsgi 모듈을 포함하도록 수정 dpkg-buildpackage한 후에 실행했습니다 . 명령의 마지막 결과는 다음과 같습니다.apt-get source nginxdebian/rules

dpkg-deb: building package `nginx' in `../nginx_0.7.67-3~bpo50+1_i386.deb'.
dpkg-deb: building package `nginx-dbg' in `../nginx-dbg_0.7.67-3~bpo50+1_i386.deb'.
 signfile nginx_0.7.67-3~bpo50+1.dsc
gpg: keyring `/home/shogun/.gnupg/secring.gpg' created
gpg: skipped "Faidon Liambotis <paravoid@debian.org>": secret key not available
gpg: [stdin]: clearsign failed: secret key not available

 dpkg-genchanges  >../nginx_0.7.67-3~bpo50+1_i386.changes
dpkg-genchanges: warning: the current version (0.7.67-3~bpo50+1) is smaller than the previous one (0.7.67-3)
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

패키지의 원래 관리자가 아니기 때문에 키가 일치하지 않는다고 불평합니다.

이것이 정말로 필요합니까? 그렇다면 어떻게 키를 사용하여 gpg 일치를 수행 할 수 있습니까?

답변:


32

PGP 서명 데비안 패키지는 개인 용도로 빌드 한 경우 필요하지 않습니다. (공식) 데비안 개발자가 데비안 "불안정한"브랜치에 새로운 패키지를 업로드 할 때 일반적인 인증 방법입니다.

오류 메시지를 피하려면 다음을 사용하십시오.

dpkg-buildpackage -uc -us

(dpkg-buildpackage 맨 페이지도 참조하십시오)


방금 부모 디렉토리를 보았는데에서 수정 날짜를 기준으로 해당 .deb 파일을 만들지 않은 것 같습니다 ls -al. gpg의 확인 실패로 인해 생성하지 못했습니다. 새 명령으로 의미합니까? 아니면 내가 착각합니까?
meder omuraliev

6

빌드 규칙을 변경했기 때문에 다른 버전의 패키지를 만들 때 실제로 변경 로그 항목을 추가해야합니다. 이렇게하면 패키지의 버전 번호가 달라 지므로 배포판의 표준 패키지가 아님을 즉시 알 수 있으며 변경 한 내용을 찾을 수 있습니다.

편집 debian/changelog하고 기존 항목의 형식을 모방 한 항목을 추가하십시오. 오늘부터 날짜를 정하고 버전 번호 like 0.7.67-3~bpo50+meder1를 선택 dpkg --compare-versions하십시오 (버전이 최신 버전 인 것을 원함 ). 전자 메일 주소를 관리자로 두십시오. 이렇게하면 수정 한 패키지임을 명확하게 알 수 있으며 dpkg-buildpackageGPG 암호 문구를 요구합니다.

Emacs 사용자 인 경우 dpkg-dev-el패키지를 설치 하고 C-c C-aand C-c C-c명령을 사용 하여 변경 로그 항목을 추가하고 마무리하십시오.


5

패키지 서명은 필요하지 않으며 -uc -us옵션을 사용하여 해당 단계를 피할 수 있지만 특히 다른 사람들이 패키지를 사용하거나 안전하지 않은 통신 경로를 통해 패키지를 보내는 경우 패키지에 서명하는 것이 도움이 될 수 있습니다. 그리고 전혀 어렵지 않습니다.

올바른 서명을 생성하려면 dpkg-buildpackage 매뉴얼 페이지를 참조하십시오 . 기본적으로 gpg로 패키지에 서명합니다. 인쇄 된 오류 메시지에서 아직 gpg 키를 생성하지 않은 것 같습니다. 몇 가지 지침과 배경은 GnuPrivacyGuardHowto-커뮤니티 우분투 문서 를 참조하십시오 .

@Gilles가 지적한 것처럼 changelog 파일을 통해 패키지 버전 번호를 변경하고 사용할 gpg 키의 이메일 주소를 제공해야합니다. 이를 수행하는 쉬운 방법은 dch --local foo명령을 실행하는 것입니다 . 여기서 "foo"는 변경을위한 키워드입니다. 그렇게하고 싶지 않고 서명자에 사용할 다른 관리자 또는 업 로더 이름 / 주소 또는 특정 키를 지정해야하는 경우 빌드 할 때 -m, -e또는 -k옵션을 사용할 수도 있습니다 .

더 많은 정보는 데비안 패키지를 재 구축하는 방법을 참조하십시오 .

까다로운 부분은 누군가가 특정 패키지에 신뢰하는 사람이 서명했는지 결정하려고 할 때 발생합니다. PGP 신뢰 웹을 확인하여 관련된 미묘한 문제를 해결하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.