Jak mogę poprawnie podpisać pakiet, który zmodyfikowałem i ponownie skompilowałem?


20

Uruchomiłem dpkg-buildpackagepo uzyskaniu apt-get source nginxwersji nginx backports i modyfikacji w debian/rulescelu włączenia modułu uwsgi. Ostatnie wyniki polecenia to:

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

Narzeka, że ​​ponieważ nie jestem oryginalnym opiekunem pakietu, mój klucz nie pasował.

Czy to jest naprawdę konieczne, a jeśli tak, to jak mogę zmusić go do użycia pasujących plików gpg?

Odpowiedzi:


32

Pakiety Debiana podpisujące PGP nie są konieczne, jeśli zbudowałeś je na własny użytek. Jest to po prostu powszechna metoda uwierzytelniania (oficjalnych) deweloperów Debiana, gdy wysyłają nowe pakiety do gałęzi „niestabilnej” Debiana.

Aby uniknąć komunikatu o błędzie, po prostu użyj:

dpkg-buildpackage -uc -us

(patrz także strona podręcznika dpkg-buildpackage)


Właśnie spojrzałem na katalog nadrzędny i wygląda na to, że nie utworzył tych plików .deb na podstawie dat modyfikacji ls -al. Nie udało się ich utworzyć z powodu nieudanej weryfikacji gpg, prawda? Czy to znaczy, że masz nowe polecenie? Czy się mylę?
meder omuraliev

6

Kiedy tworzysz inną wersję pakietu (tak jak zrobiłeś, ponieważ zmieniłeś reguły kompilacji), naprawdę powinieneś dodać wpis dziennika zmian. W ten sposób twój pakiet będzie miał inny numer wersji (więc od razu będziesz wiedział, że to nie jest standardowy pakiet z dystrybucji) i będziesz miał ślad tego, co zmieniłeś.

Edytuj debian/changelogi dodaj wpis naśladujący format istniejących wpisów. Wybierz datę od dzisiaj i wybierz numer wersji like 0.7.67-3~bpo50+meder1(chcesz czegoś, co dpkg --compare-versionsmówi, że twoja wersja jest nowsza). Podaj swój adres e-mail jako opiekuna; w ten sposób masz wyraźne wskazanie, że jest to zmodyfikowany pakiet, i dpkg-buildpackagepoprosisz o podanie hasła GPG.

Jeśli jesteś użytkownikiem Emacsa, zainstaluj dpkg-dev-elpakiet i użyj poleceń C-c C-aoraz C-c C-c, aby dodać i sfinalizować wpis dziennika zmian.


5

Chociaż podpisywanie pakietu nie jest konieczne, a -uc -usopcji można użyć, aby uniknąć tego kroku, pomocne może być również podpisanie pakietu, zwłaszcza jeśli inni będą go używać lub będziesz wysyłać go niebezpiecznymi ścieżkami komunikacyjnymi. I wcale nie jest to trudne.

Aby wygenerować dobry podpis, zobacz stronę podręcznika dla dpkg-buildpackage . Domyślnie podpisuje paczki za pomocą gpg. Z wydrukowanych komunikatów o błędach wynika, że ​​po prostu jeszcze nie wygenerowałeś klucza gpg. Zobacz np. GnuPrivacyGuardHowto - Community Ubuntu Documentation, aby uzyskać instrukcje i tło.

Jak zauważa @Gilles, należy również zmienić numer wersji pakietu za pomocą pliku dziennika zmian i podać adres e-mail dla klucza gpg, którego będziesz używać. Łatwym sposobem na to jest uruchomienie dch --local foopolecenia, gdzie „foo” jest słowem kluczowym dla zmiany. Jeśli naprawdę nie chcesz tego zrobić, a trzeba podać inny opiekun lub uploader nazwa / adres lub klucz specyficzny być stosowane podczas podpisywania, można również użyć -m, -elub -kprzy budowie opcja.

Zobacz Jak przebudować pakiety Debiana, aby uzyskać więcej wskazówek.

Trudna część przychodzi, gdy ktoś próbuje zdecydować, czy dana paczka jest podpisana przez osobę, której ufa. Sprawdź sieć zaufania PGP, aby poradzić sobie z subtelnymi problemami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.