ACCESS Advent Calendar 2022 の7日目になります。
みなさんは自分で作ったプログラムをaptでインストールできたらいいのにな。と思ったことはありませんか?
私は時々インストール手順とかもう書きたくない。aptでインストールして設定部分だけドキュメントにしたい!!
と何度か思ったことがあり、自分でレポジトリを作成してホストしたことがあります。
しかし、launchpadを使えばセルフホストなんてしなくていいんです。
ソースパッケージを登録すればビルドもやってくれます。
なのでそのやり方について書いていこうと思います。
英文 https://packaging.ubuntu.com/html/getting-set-up.html
launchpadのアカウントの作り方はもう覚えてないのでその後から…
やることは下記
- SSHキーの登録
- GPGキーの登録 - PPAの作成
- ソースパッケージの作成
- ビルドの確認
- アップロード
sshキーの登録
下記のボタンを押してsshの公開鍵を登録します。流石に今どき持ってないということはないと思うので作り方は割愛
テキストの公開鍵をコピペしてImport Public Keyを押す
GPGキーの登録
まずはGPGキーの作成
gpg --gen-key
ubuntuのキーサーバーに転送します
gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>
launchpadのアカウントにGPGキーの紐付け
作成したGPGキーのフィンガープリントを表示します。
gpg --fingerprint <メールアドレス>
GPGの登録ページに行きます。(途中アカウントの再ログインがある場合があります)
ソースパッケージの作成
ソースパッケージを作成します。
まずパッケージ作成時に自動でGPGでサインしてくれるように環境変数を設定します。
export DEBFULLNAME="hisayoshi suehiro"
export DEBEMAIL=<メールアドレス>
今回はサンプルとしてGNU Helloを使います。
helloパッケージ自体はすでに登録されているのでリネームしてbolshelloとしました。
wget -O hello-2.10.tar.gz "http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz"
mv hello-2.10 bolshello-2.11
tar czvf bolshello-2.11.tar.gz bolshello-2.11/
ソースパッケージを作成します。
ソースパッケージは dh_make を利用してテンプレートを作成します。 cmake,autotools,makeなどメジャーなビルドツールは自動検出してくれます。パッケージタイプは今回は "s" となります。
dh_make -f ../../pkg_tmplate/bolshello-2.11.tar.gz
rm debian/*.ex
ビルド時にcleanを走らせようとして失敗するので debian/rules に下のように追記します。override_で始まるこれはパッケージのビルド時の動作を変更します。
override_dh_auto_clean:
依存関係に"gettext, texinfo,"をdebian/controlに追記し、ubuntuのバージョン名とパッケージセクションを変更します。
バージョンとパッケージセクションが存在しているものでないと launchpad が受け入れてくれないので注意してください。
sed -i "s/UNRELEASED/jammy/" debian/changelog
sed -i "s/debhelper-compat/gettext, texinfo, debhelper-compat/" debian/control
sed -i "s/unknown/devel/" debian/control
sed -i "s/\<insert the upstream URL, if relevant\>/http://www.lnc.jp/" debian/control
debuild -S
以上でソースパッケージが作成できます。
ビルドの確認
作成したソースパッケージがビルドできるか確認します。
pbuilder-dist jammy build bolshello_2.11-1.dsc
ビルドが成功すると ~/pbuilder/jammy_result/ 以下にパッケージが生成されます。
アップロード
サインがされていれば下記コマンドでソースを転送することでパッケージがビルドされて公開されます。
dput ppa:bols-blue/hello bolshello_2.10-1_source.changes
初回のみ、しばらくの間(数時間)エラーが出るので気長に待ちましょう。
以上で launchpad で PPA として公開できるようになりました。