2020年10月5日月曜日

Reprepro で APT リポジトリを構築する

前々回, 前回 と、deb パッケージを作ったので、これを公開する APT リポジトリを作っていく。

コンテナ起動

docker run -it --rm -v "$(pwd):/work" --workdir="/work" debian:buster-slim

APT リポジトリの構築

必須パッケージのインストール

apt-get update
apt-get install -y gnupg2 reprepro

署名用の鍵生成

鍵生成の設定ファイル作成

gpg --full-generate-key
  1. Please select what kind of key you want : `(1) RSA and RSA (default)`
  2. What keysize do you want? (3072) : 4096
  3. Please specify how long the key should be valid. : 0
  4. Is this correct? (y/N) : y
  5. Real name : mikoto2000
  6. Email address : mikoto2000@gmail.com
  7. Comment : Athrill apt repository key.
  8. Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? : O
  9. Passphrase : (空)

鍵の ID をメモしておく。

(今回は 6B5F3367A3F74C173E2E83612F6719AE3DEFC0C0 だった。)

リポジトリ設定

リポジトリ設定格納用ディレクトリの作成

mkdir -p /work/reprepro/conf

リポジトリ設定作成

/work/reprepro/conf/distributions

cat <<EOF> /work/reprepro/conf/distributions
Origin: TOPPERS/hakoniwa
Label: Athrill
Codename: bionic
Architectures: amd64
Components: main
Description: Apt repository for project Athrill
SignWith: 6B5F3367A3F74C173E2E83612F6719AE3DEFC0C0
EOF
  • Codename : ディストリビューションのコードネーム。bionic だったり buster だったり
  • SignWith : gpg コマンドで作成した公開鍵の ID

パッケージの取り込み

cd /work/reprepro
reprepro includedeb bionic /work/athrill-rh850f1x_0.A.0-1_amd64.deb

署名の設定

cd /work/reprepro
gpg --armor --output athrill.gpg.key --export 6B5F3367A3F74C173E2E83612F6719AE3DEFC0C0

動作確認

Web サーバーを立ててそこからインストールしてみる。

APT リポジトリとなる nginx 起動

新しく nginx のコンテナを立てる。

先ほど作成した reprepro ディレクトリを /usr/share/nginx/html にマウントする。

docker run -it --rm -v "$(pwd)/reprepro:/usr/share/nginx/html:ro" -p "80:80" --name nginx nginx

※ 実際は、 db/, conf/ は見えないようにするらしい

正しくインストールできるか確認

先ほど立ち上げた nginx から、正しく apt でインストールできるかを確認する。

新たに debian:buster-slim のコンテナを立ち上げて、 host.docker.internal の APT リポジトリを登録する。

インストールする debian の起動

docker run -it --rm ubuntu:18.04

必要パッケージインストール

apt-get update
apt-get install -y curl gnupg2 software-properties-common

APT リポジトリのキー登録

curl -fsSL http://host.docker.internal/athrill.gpg.key | apt-key add -

APT リポジトリ登録

add-apt-repository "deb http://host.docker.internal bionic main"
apt-get update

インストール

apt-get install -y athrill-rh850f1x

鍵の管理

このままだと、コンテナ終了時に秘密鍵も消えてしまうので、コンテナからエクスポートしてコピーすること。

鍵のエクスポート

cd /
gpg --list-secret-keys
gpg --export-secret-keys --output backup.sec.key mikoto2000@gmail.com
gpg --export --output backup.pub.key mikoto2000@gmail.com

鍵のインポート

gpg --import ./backup.sec.key
gpg --import ./backup.pub.key

参考資料

0 件のコメント:

コメントを投稿