自前でビルドしたパッケージを apt-get install できるように,自分専用の Debian リポジトリ(=自前apt-line)を作成しました.作業メモを公開します
概要
下準備-1: GPG鍵生成
GPG鍵を生成します
$ gpg --gen-key
個人用Debianリポジトリ専用の鍵ということで,割りきって,パスフレーズは空にします
また,この鍵を
- パッケージのバイナリの署名
- リポジトリ自体の署名
で兼用します
作成した鍵のKeyIDを確認します
$ gpg --list-keys
問題なければ,鍵を,ビルドPCとWebサーバ,両方にコピーしておきます
gpg鍵のコピーはsshコマンド経由が便利です
gpg --export-secret-key [KEYID] | ssh [サーバ名] gpg --import --allow-secret-key-import
下準備-2: Webサーバ側の設定
apt-line は
deb http://hogehoge.example.com/~pyopyopyo/deb local
とします.つまり http://hogehoge.example.com/~pyopyopyo/deb 以下で *.deb などのファイルを公開することになります
予め Webサーバ上に deb ディレクトリを作成しておきます.必要に応じてパーミッションも変えておきます
$ mkdir -p ~/public_html/deb $ chmod o+rx ~/public_html/deb
下準備-3: Webサーバ側の設定(mini-dinstall)
Webサーバに mini-dinstall をインストールします
$ sudo apt-get install mini-dinstall
設定ファイルは ~/.mini-dinstall.conf になります
[DEFAULT] mail_to = メールアドレス incoming_permissions = 0750 architectures = all, i386, amd64 archive_style = flat dynamic_reindex = 1 archivedir = /home/pyopyopyo/public_html/deb generate_release = 1 release_origin = pyopyopyo release_label = pyopyopyo release_description = Unofficial Debian packages maintained by pyopyopyo release_signscript = /home/pyopyopyo/bin/sign_release.sh [local] release_suite = local
パッケージの署名用スクリプト ~/bin/sign_release.sh を用意します.中身は以下の通り
#!/bin/sh rm -f Release.gpg gpg --digest-algo SHA512 -u [鍵ID] -bao Release.gpg $1
[鍵ID]は先程作成した GPGキーの識別子を指定します
$ chmod a+x ~/bin/sign_release.sh
下準備-3: ビルド用PC側の設定(dput)
ビルド用PCに,dput をインストールします
$ sudo apt-get install
dput はビルドしたパッケージを Webサーバへアップロードする際に使用します
設定ファイルは ~/.dput.cf になります
[hogehoge] fqdn = hogehoge.example.com method = scp login = pyopyopyo incoming = /home/pyopyopyo/public_html/deb/mini-dinstall/incoming post_upload_command = ssh pyopyopyo@hogehoge.example.com mini-dinstall -b
この設定ファイルを使うと,dput は ssh コマンド(とscp)を使って Webサーバにファイルを配置するようになります
使い方: パッケージのビルドとアップロード
apt-line で distribution を local と指定しているので,パッケージもlocal としてビルドします
指定方法は debian/changelog で distribution に local を指定するだけです.debchange コマンドを使うと楽です
$ debchange --distribution local --newversion "バージョン番号" "コメント"
パッケージをビルドする時は GPG鍵を指定します
$ dpkg-buildpackage -k" [鍵ID]" -rfakeroot
ビルドに成功したらアップロードします.
$ dput hogehoge *.changes
hogehogeは ~/.dput.cf で指定したターゲット名です. *.changes は dpkg-buildpackage の出力ファイルで,パッケージのファイル名やら情報が詰まっています
dput は,内部で Webサーバー側の mini-dinstall を起動します.そして mini-dinstall は処理結果をメールで通知します.メールが届かない場合は Webサーバー側の ~/.mini-dinstall.conf の内容を確認したり,Webサーバのメールの設定を見直しましょう
使い方: apt-line の設定
apt-line を追加します.
$ sudo vi /etc/apt/sources.list.d/local.list
中身は
deb http://hogehoge.example.com/~pyopyopyo/deb local
GPGキーをapt側に import します
$ gpg --export [鍵ID] | sudo apt-key add -
update してみます
$ apt-get update
$ apt-get install 自前パッケージ名
少々設定が面倒ですが,複数のdebianマシンを使っている場合は,一度設定しておくと後々便利に使えると思います