GPG 키를 구성했습니다. git 소스 패키지를 로컬로 복제했습니다. 나는 chroot를 사용하여 extra-x86_64-build
. 패키지를 만들 수 있어요아니요서명하고 로컬 개인 저장소에 추가하세요. 이제 패키지를 만들고 싶습니다.서명를 설치할 때 클라이언트에서 서명 확인이 필요한 개인 로컬 저장소에 추가했습니다 pacman
.
단계는 무엇입니까?
다음은 다양한 Arch 위키 페이지, 매뉴얼 페이지 및 기타 장소에서 수집한 현재 단계입니다. 현재 수행 중인 작업과 여전히 혼란스럽거나 문제가 있는 부분을 보여주기 위해 몇 가지 세부 정보를 제공했습니다. 참고: 처음 세 섹션을 아무 문제 없이 완료할 수 있었습니다. 내 문제는 그 이후부터 시작됐다.
초기 일반 단계(모두 완료됨):
- 위키 페이지 읽기(예:https://wiki.archlinux.org/index.php/Creating_packages)
- 설치하다
base-devel
,devtools
,namcap
,shellcheck
systemctl status haveged
# 활성화되어 있는지 확인하세요
예비 패키지 서명 단계(모두 완료됨):
- /usr/share/devtools/pacman-extra.conf를 확인하세요.
- 여기에 로컬 개인/사용자 지정 저장소를 추가했습니다(기본 SigLevel 사용).
- /etc/makepkg.conf를 편집합니다:
BUILDENV=(!distcc color !ccache check sign)
sign
# 활성화되어 있는지 확인하세요PACKAGER="My Name <[email protected]>
"GPGKEY="1234ABCD09876"
# 키 지문은 공백 없이 모두 대문자로 사용하세요.
- 사용자 키링의 기존 GPG 키를 사용하여 다음 단계를 수행합니다.
gpg --armor --output mykey.sec --export-secret-keys 1234ABCD09876
sudo pacman-key -a mykey.sec
sudo pacman-key --finger 1234ABCD09876
sudo pacman-key --lsign-key 1234ABCD09876
소스 파일 PKGBUILD 준비(완료):
git clone ${url}
# 또는 이미 복제된 경우 git pull- PGBUILD를 확인하세요.
namcap -i PKGBUILD
makepkg --packagelist
# 버전 번호 확인(선택 사항)
질문:
- 참고 - 저는 내부의 신뢰할 수 있는 소스 파일로 시작했습니다. 서명되지 않았으며 시작할 때 PKGBUILD에 금액이 없습니다.
.sig
빌드된 패키지와 해당 파일 의 합계를 포함하도록 PKGBUILD를 수정하려면 어떻게 해야 합니까 ?.sig
PKGBUILD에 패키지 파일이 추가되는 단계는 무엇입니까? 당신은 그렇게 않았다 방법?
- PKGBUILD에 빌드 패키지의 합계는 언제 추가되나요?
- 이 단계는 언제 실행해야 합니까? makepkg -g >> PKGBUILD
- 이것을 언제 사용하나요? 패키지 합계 업데이트
다음으로 chroot 환경에서 패키지를 빌드합니다.단지 아니패키지 서명)
`extra-x86\_64-build`
참고: 다음 문제가 발생했습니다. makepkg: 동적 버전으로 소스 패키지에 서명할 수 없습니다.https://bbs.archlinux.org/viewtopic.php?id=259771(이 문제는 팩맨의 다음 버전에서 수정될 것 같나요? 현재 해결책은 VCS 파생 버전을 사용하는 대신 버전 번호를 하드코딩하는 것 같아요.)
개인 저장소에 추가하는 방법(pkg 서명 없이 이 작업을 수행할 수 있지만 테스트용으로 서명된 패키지를 성공적으로 만들지 못했습니다):
- newpkg="mypackage.r10.918a28e-1-any.pkg.tar.zst" # 예
namcap -i "$newpkg"
repoctl add --require-signature "$newpkg"
재구매 질문:
--require-signature
위 줄에 arg가 필요합니까?
답변1
$pkg
내부적으로 패키지를 구축 했고 ~/build
다음을 원한다고 가정해 보겠습니다 .서명한 다음 서명된 데이터베이스에 추가하세요.이름을 지정하십시오 . 이를 사용하고 수행하는 방법에 대한 단계는 test_repo
다음과 같습니다 .gpg
repo-add
pkg=some-package-0.0.2-1-any.pkg.tar.zst
# Create a detached signature.
gpg --use-agent --output ~/build/"${pkg}".sig --detach-sig ~/build/"${pkg}"
# Copy package and its signature to repository directory.
cp ~/build/"${pkg}"{,.sig} ~/repo/
# Add package to repository and sign it.
repo-add --verify --sign ~/repo/test_repo.db.tar.gz ~/repo/"${pkg}"
도착하다설치하다포장 및서명이 유효한지 테스트, 다음에 저장소를 추가할 수 있습니다 /etc/pacman.conf
.
[test_repo]
SigLevel = Required TrustedOnly
Server = file:///home/YOUR-USERNAME/repo
그런 다음 실행 pacman -Syu
하고 pacman -S some-package
.
서명 키를 팩맨 키링으로 가져오지 않은 경우 팩맨은 키 ID를 표시하고 가져오도록 요청합니다. 네 라고 말하다. 그런 다음 가져온 키에 서명 sudo pacman-key --lsign <key-id>
하고 패키지를 다시 설치해 보세요.
원천:
https://archlinux.org/pacman/makepkg.conf.5.html
--sign
옵션makepkg
재정의sign
의 설정을 사용하십시오makepkg.conf
. "이 작업은 GPG 에이전트(사용 가능한 경우)를 사용하여 분리된 서명 파일을 생성하기 위해 빌드된 패키지에서 수행됩니다gpg --detach-sign --use-agent
. 서명 파일은 확장자가 ".sig"인 패키지의 전체 파일 이름이 됩니다.
https://wiki.archlinux.org/title/DeveloperWiki:Package_signing#Arch_implementation
- "[...] .[...] 사용
repo-add --verify --sign
이러한 옵션과 별도로repo-add
분리된 서명이 감지되어 base64를 통해 ASCII로 변환되고 저장소 데이터베이스에 추가됩니다.
- "[...] .[...] 사용
나는 경험이 없다보고서, 하지만 위의 내용이 도움이 되기를 바랍니다. 아마도 gpg 서명을 만든 다음 실행하면 충분할 것입니다.repoctl add --require-signature ~/build/"${pkg}"