自前のDebianリポジトリを作る方法

自前でビルドしたパッケージを apt-get install できるように,自分専用の Debian リポジトリ(=自前apt-line)を作成しました.作業メモを公開します

概要

  • debパッケージのビルドは「ビルド用PC」で行います
  • ビルドしたdebパッケージは「Webサーバ」に置きます
    • Webサーバは debian で稼働しているものとします.後述のように mini-dinstall というプログラムを使用するためです

下準備-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マシンを使っている場合は,一度設定しておくと後々便利に使えると思います


Debian GNU/Linux徹底入門第3版 Sarge対応
武藤 健志
翔泳社
売り上げランキング: 58,920