Home > まめ知識 | 開発裏話 > 自作RPMの作成とレポジトリ2〜RPMパッケージをyumで使う〜

自作RPMの作成とレポジトリ2〜RPMパッケージをyumで使う〜

前回のコンパイル環境で、rpmを作ることはできるのですが、yumにてインストールはできません。(できないことは無いのですが・・)

今回は、yumのレポジトリの作成について書きたいと思います。

yumのレポジトリ作成の前に

 yumにてインストールするためには、rpmにサインしなければなりません。(無くてもできますが、あったほうがいいということで・・)

サインするためには、署名をつくる必要があります。とりあえず、ユーザーはnaviでやってみます。。

まずはnaviでログインします。rootからsuで移っていると、鍵生成の段階でキャンセルされるので注意。

# mkdir .gnupg
# gpg --gen-key

2行目のやつで、鍵作成がスタートします。

gpg (GnuPG) 1.4.5; 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 (署名のみ)
選択は? 

既定でいいのでEnter。

DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 

これも既定でいいのでEnter。

要求された鍵長は2048ビット
鍵の有効期限を指定してください。
         0 = 鍵は無期限
      <n>  = 鍵は n 日間で満了
      <n>w = 鍵は n 週間で満了
      <n>m = 鍵は n か月間で満了
      <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)

これもまた既定でいいのでEnter。

Key does not expire at all
これで正しいですか? (y/N) 

ここは,yを入れてEnter。

あなたの鍵を同定するためにユーザーIDが必要です。
このソフトは本名、コメント、電子メール・アドレスから
次の書式でユーザーIDを構成します:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

本名:
電子メール・アドレス: 
コメント: 

署名の本名/アドレス/コメントはRPMパッケージを公開するときは、公開されます。5文字以上の任意の名前をいれます。

次のユーザーIDを選択しました:
    “test_user (tesutodesu) <test@test.local>”

名前(N)、コメント(C)、電子メール(E)の変更、またはOK(O)か終了(Q)? 

問題無ければ、oでEnter。このユーザーIDは、後で使います。

秘密鍵を保護するためにパスフレーズがいります。

パスフレーズは、これから署名を行うときにも何度も聞かれます。忘れないものを付けておいてください。

二回パスフレーズを入力すると、乱数生成が始まります。

今から長い乱数を生成します。キーボードを打つとか、マウスを動かすとか、ディスクにアクセスするとかの他のことをすると、乱数生成子で乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
..++++++++++....+++++++++++++++.++++++++++.++++++++++.++++++++++++++++++++.++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++++++++++++.+++++..+++++>.++++++++++>+++++>+++++...............<+++++..>.+++++..........................................................................>.+++++..<.+++++.........................<+++++...........................+++++^^^^^
十分な長さの乱数が得られません。OSがもっと乱雑さを収集できるよう、何かしてください! (あと284バイトいります)

大抵、こんな感じで怒られるので、キーボードを叩きまくるといいです。

gpg: /home/navi/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵604D4506を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

gpg: 信用データベースの検査
gpg: 最小の「ある程度の信用」3、最小の「全面的信用」1、PGP信用モデル
gpg: 深さ: 0  有効性:   1  署名:   0  信用: 0-, 0q, 0n, 0m, 0f, 1u
pub   1024D/604D4506 2010-11-03
                 指紋 = 3F9C DBC8 4B26 0866 FA65  15C2 CDB3 2644 604D 4506
uid                  test_user (tesutodesu) <test@test.local>
sub   2048g/AB9F9E3B 2010-11-03

できました。最初に作った.gnupgフォルダにいろいろ入っています。

最後に、前回も使った.rpmmacrosファイルに情報を追記します。

# vi .rpmmacros
%topdir /home/navi/mkrpm
%_gpg_path /home/navi/.gnupg
%_gpg_name test_user (tesutodesu) <test@test.local>
%_gpgbin /usr/bin/gpg
%_signature     gpg

下四行を追記します。_gpg_nameは、先ほどつけたユーザーIDをコピペしてください。

最後に、.gnupgフォルダのパーミッションを700に変更しておいてください。

#chmod 700 -R .gnupg

次に署名したものを外から検証するための、公開鍵を作ります。

# gpg -a --export "test_user" > RPM-GPG-KEY-TEST

出力ファイルの名前は何でもいいのですが、” ”でくくられた部分には、鍵作成のときに付けた本名が必要です。

このファイルは、各クライアントに配布する必要があります。(後述)

署名のしかた

1.どこかから持ってきたrpmに署名するとき

# rpm --resign ***.rpm

2.自分が作ったrpmに署名するとき

# rpm --addsign ***.rpm

ついでに、フォルダの下のすべてを署名するときは、

# rpm --resign ~/rpms/*

でワイルドカード指定できます。

レポジトリを立てる。

必要なものはhttpサーバーと、createrepoパッケージです。今回は、apacheを入れることを前提に書きます。

rootで、

# yum install httpd
# yum install createrepo

centOSとかでは、apacheのデフォルトの公開ディレクトリは/var/www/htmlになると思います。ここに、レポジトリ用フォルダを作っておいてください。

# mkdir /var/www/html/myrepo
# chown navi:navi /var/www/html/myrepo

レポジトリフォルダの所有者をnaviに変えておくといいです。

suにてnaviになって、rpmをレポジトリフォルダにどんどん入れてください。

そして、公開する前に

# createrepo /var/www/html/myrepo

とすると、レポジトリができあがります。(apacheは起動しておいてください。)

クライアント側のための設定

最後に、レポジトリをyumから読ませる方法です。クライアントPCにて、

# cd /etc/yum.repos.d/
# vi local.repo

#レポジトリの名前
[test_repo]
#レポジトリの表示名
name=test_repo
#レポジトリの場所(ftpかhttp、同一PCだけならfileでもいける。)
baseurl=http://192.168.0.1/myrepo/
#署名のチェックを行うかどうか
gpgcheck=1
#このレポジトリがデフォルトで有効かどうか。
enabled=1
#署名の公開キーの場所。
gpgkey=file:///etc/yum.repos.d/RPM-GPG-KEY-TEST

で、/etc/yum.repos.d/下にlocal.repoファイルを作り、同一フォルダに、先ほどの署名の公開鍵をscpとかして置きます。

これで、yumコマンドでレポジトリを観に行ってくれるようになります。

インストールとかの一回目は、キーを取り込んでもいいか聞かれるはずです。

Comments:0

Comment Form

Trackbacks:0

Trackback URL for this entry
http://dev.tapweb.co.jp/2010/11/267/trackback
Listed below are links to weblogs that reference
自作RPMの作成とレポジトリ2〜RPMパッケージをyumで使う〜 from tap dev blog

Home > まめ知識 | 開発裏話 > 自作RPMの作成とレポジトリ2〜RPMパッケージをyumで使う〜

Search
Feeds

Return to page top