プライベートリポジトリに追加するために、私のArch Linux gitパッケージにどのように署名しますか?

プライベートリポジトリに追加するために、私のArch Linux gitパッケージにどのように署名しますか?

GPGキーを設定しました。 gitソースパッケージをローカルに複製しました。私はchrootを使用してextra-x86_64-build。パッケージを作成できます。いいえ署名してローカルのプライベートストアに追加します。さて、パッケージを作りたいです。署名をインストールするときに、クライアントが署名検証を必要とする個人用ローカルストアに追加されましたpacman

ステップは何ですか?

以下は、さまざまなArch Wikiページ、マニュアルページ、その他の場所から収集した現在のステップです。現在行っていることと、まだ混乱しているか問題があるかを示すために、いくつかの詳細を提供しました。注:最初の3つのセクションは問題なく完了できました。私の問題はそれ以来始まった。

初期一般ステップ(すべて完了):

  1. Wikiページを読む(例:https://wiki.archlinux.org/index.php/Creating_packages)
  2. インストールするbase-devel, devtools, namcap,shellcheck
  3. 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の準備(完了):

  1. git clone ${url}#またはすでに複製されている場合はgit pull
  2. PGBUILDを確認してください。
  3. namcap -i PKGBUILD
  4. makepkg --packagelist#バージョン番号の確認(オプション)

質問:

  1. 注 - 私は内部の信頼できるソースファイルから始めました。署名されておらず、起動時にPKGBUILDに金額がありません。
  2. .sigビルドされたパッケージとそのファイルの合計を含めるようにPKGBUILDを変更するにはどうすればよいですか?
    • .sigPKGBUILDにパッケージファイルを追加する手順は何ですか?あなたはそうしなかった方法?
  3. 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次のとおりです。gpgrepo-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}"

おすすめ記事