自作rpmパッケージをyumで管理
こんにちは、yokkunsです。
昨日、乗る電車を間違えて、飲み会に遅刻してしまいました。
さて、今回は、yumによるrpmパッケージ管理について書きたいと思います。
ご存知の方も多いかと思いますが、yumには、localinstallというオプションがあって、rpmパッケージをyumで管理することが出来ます。
$ sudo yum localinstall
これは、通常のrpmコマンドと何が違うかというと、依存関係を自動で解決してくれるところです。
また、パッケージの管理をyumで一元管理出来るのですごく便利です。
まず、yumでインストールするためには、GPG署名が必要なので、それを作成します。
$ gpg --gen-key gpg (GnuPG) 1.4.7; Copyright (C) 2006 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. ご希望の鍵の種類を選択してください: (1) DSAとElgamal (既定) (2) DSA (署名のみ) (5) RSA (署名のみ) 選択は? DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 要求された鍵長は2048ビット 鍵の有効期限を指定してください。 0 = 鍵は無期限 <n> = 鍵は n 日間で満了 <n>w = 鍵は n 週間で満了 <n>m = 鍵は n か月間で満了 <n>y = 鍵は n 年間で満了 鍵の有効期間は? (0) Key does not expire at all これで正しいですか? (y/N) y あなたの鍵を同定するためにユーザーIDが必要です。 このソフトは本名、コメント、電子メール・アドレスから 次の書式でユーザーIDを構成します: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" 本名: yokkuns 電子メール・アドレス: yokkuns@example.com コメント: yokkuns comment 次のユーザーIDを選択しました: “yokkuns (yokkuns comment) <yokkuns@example.com>” 名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? o 秘密鍵を保護するためにパスフレーズがいります。 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 .+++++.++++++++++.+++++++++++++++++++++++++.++++++++++.+++++. ++++++++++++++++++++..+++++++++++++++++++++++++++++++++++ ++++++++++++++++++++>++++++++++..>+++++.................... ........<+++++..>..+++++........................<+++++........ ...+++++ 今から長い乱数を生成します。キーボードを打つとか、マウスを動かす とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で 乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。 ++++++++++.+++++++++++++++..+++++++++++++++++++++++++.+++++++++++++++ ...+++++++++++++++++++++++++.++++++++++++++++++++++++++++++.+++++. ++++++++++.++++++++++>.+++++..+++++>..+++++..........>..+++++........ ...........<....+++++........>+++++............................< .+++++.....................................>+++++..................... ......................<+++++>+++++.....+++++^^^ gpg: 鍵1ED1F1D5を絶対的に信用するよう記録しました 公開鍵と秘密鍵を作成し、署名しました。 gpg: 信用データベースの検査 gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル gpg: 深さ: 0 有効性: 4 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 4u pub 1024D/1ED1F1D5 2009-04-26 指紋 = 1457 92B6 E153 4A2F 7F4C E61C 4AFB C21C 1ED1 F1D5 uid yokkuns (yokkuns comment) <yokkuns@example.com> sub 2048g/800C3038 2009-04-26
次に、自作のrpmパッケージに署名を付けるために、~/.rpmmacrosに、以下を追記します。
%_signature gpg
%_gpg_name yokkuns (yokkuns comment)
自作のrpmパッケージに署名を埋め込みます。
rpmbuildで、再度ビルドしても良いし、既にビルドしてるのであれば、rpm --resignで署名することも出来ます。
最後に、公開鍵を作成して、インポートします。
$ gpg -a --export "yokkuns" > RPM-GPG-KEY-Yokkuns
$ sudo rpm --import RPM-GPE-KEY-Yokkuns
以上で、自作のrpmパッケージをyumで管理することが出来るようになりました。
$ sudo yum localinstall original-1.0-1.noarch.rpm Loading "fastestmirror" plugin Loading "downloadonly" plugin Setting up Local Package Process Loading mirror speeds from cached hostfile * kde: apt.kde-redhat.org * livna: mirrors.tummy.com * fedora: ftp-stud.hs-esslingen.de * kde-all: apt.kde-redhat.org * adobe-linux-i386: linuxdownload.adobe.com * updates: ftp-stud.hs-esslingen.de Examining oroginal-1.0-1.noarch.rpm: orijinal - 1.0-1.noarch Marking original-1.0-1.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package original.noarch 0:1.0-1 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Installing: original noarch 1.0-1 original-1.0-1.noarch.rpm 22 k Transaction Summary ============================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 22 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing: original ######################### [1/1] Installed: original.noarch 0:1.0-1 Complete!