自作RPMパッケージを公開する


  1. 使用した主なパッケージ

    m-hotta@gaia:~$ rpm -q gnupg rpm httpd createrepo w3m
    gnupg-1.4.5-14
    rpm-4.4.2.3-18.el5
    httpd-2.2.3-31.el5.centos.2
    createrepo-0.4.11-3.el5
    w3m-0.5.1-15.el5
    
  2. GPG鍵の作成

    m-hotta@gaia:~$ gpg --gen-key
    (後は指示に従う)
    十分な長さの乱数が得られません。OSがもっと乱雑さを収集
    できるよう、何かしてください! (あと281バイトいります)
    (ここで処理が止まるので、別の端末から以下のように重い処理を動かす)
    m-hotta@gaia:~$ dd if=/dev/random of=/dev/null bs=100000
    (2-3分後に処理が進んで完了する)
    【破棄証明書の生成】
    m-hotta@gaia:~$ gpg -o /naisho/revcert.asc --gen-revoke 'HOTTA Michihide'
    【公開鍵のエクスポート】
    m-hotta@gaia:~$ gpg -o .gnupg/pubkey.asc -a --export 'HOTTA Michihide'
    
  3. RPMパッケージへの署名

    m-hotta@gaia:~$ cat >> .rpmmacros <<_EOF_
    %_signature     gpg
    %_gpg_path      /home/m-hotta/.gnupg
    %_gpg_name      HOTTA Michihide <hotta@net-newbie.com>
    %_gpgbin        /usr/bin/gpg
    _EOF_
    m-hotta@gaia:~$ rpm --addsign rpm/RPMS/i386/samba-*
    
  4. リポジトリ公開用サイトの作成

    m-hotta@gaia:~$ sudo mkdir /var/www/repos
    m-hotta@gaia:~$ sudo chown m-hotta /var/www/repos/
    m-hotta@gaia:~$ grep -Ew -C 1 Include /etc/httpd/conf/httpd.conf
    #
    #Include conf.d/*.conf
    
    --
    NameVirtualHost *:80
    Include conf.d/*.conf
    m-hotta@gaia:~$ sudo cat > /etc/httpd/conf.d/repos.conf <<_EOF_
    <VirtualHost *:80>
        DocumentRoot /var/www/repos
        ServerName repos.net-newbie.com
        CustomLog logs/repos_log combined
        ErrorLog logs/repos-error_log
        <Location />
            Options +Indexes
        </Location>
    </VirtualHost>
    _EOF_
    root@gaia:~# sudo /sbin/service httpd reload
    

    (別途、DNS に repos.net-newbie.com の正引きを設定しておく)

  5. リポジトリ作成&パッケージの登録

    m-hotta@gaia:$ mkdir -p /var/www/repos/5.4/{,S}RPMS
    m-hotta@gaia:/var/www/repos$ ln -s 5.4 5
    m-hotta@gaia:~$ cp rpm/RPMS/i386/samba*3.4.5* /var/www/repos/5/RPMS/
    m-hotta@gaia:~$ cp rpm/SRPMS/samba-3.4.5-1.src.rpm /var/www/repos/5/SRPMS/
    m-hotta@gaia:~$ createrepo /var/www/repos/5/RPMS/
    m-hotta@gaia:~$ createrepo /var/www/repos/5/SRPMS/
    m-hotta@gaia:~$ cp .gnupg/pubkey.asc /var/www/repos/RPM-GPG-KEY-newbie
    m-hotta@gaia:~$ cat > /var/www/repos/newbie-pub.repo <<_EOF_
    [newbie]
    name=samba-3.4.x for centos5x
    baseurl=http://repos.net-newbie.com/$releasever/RPMS/
    enabled=0
    gpgcheck=1
    gpgkey=http://repos.net-newbie.com/RPM-GPG-KEY-newbie
    
    [newbie-srpms]
    name=samba-3.4.x source pakages for centos5x
    baseurl=http://repos.net-newbie.com/$releasever/SRPMS/
    enabled=0
    gpgcheck=1
    gpgkey=http://repos.net-newbie.com/RPM-GPG-KEY-newbie
    _EOF_
    
  6. サーバー側の動作確認

    m-hotta@gaia:~$ ls -l /var/www/repos/
    合計 12
    lrwxrwxrwx 1 m-hotta wheel    3  1月 20 15:23 5 -> 5.4
    drwxr-xr-x 4 m-hotta wheel 4096  1月 20 15:25 5.4
    -rw-r--r-- 1 m-hotta wheel 1690  1月 20 15:13 RPM-GPG-KEY-newbie
    -rw-r--r-- 1 m-hotta wheel  363  1月 20 15:36 newbie-pub.repo
    m-hotta@gaia:~$ w3m http://repos.net-newbie.com
    Index of /
    [ICO]        Name          Last modified   Size Description
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    [DIR] 5/4/               20-Jan-2010 15:25    -
    [ ]   RPM-GPG-KEY-newbie 20-Jan-2010 15:13 1.7K
    [ ]   newbie-pub.repo        20-Jan-2010 15:36  363
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    Apache/2.2.3 (CentOS) Server at repos.net-newbie.com Port 80
    
  7. リポジトリサイトの利用

    m-hotta@celsior:~$ sudo yum -y install yum-priorities
    m-hotta@celsior:~$ wget http://repos.net-newbie.com/newbie-pub.repo
    m-hotta@celsior:~$ sudo mv newbie-pub.repo /etc/yum.repos.d/
    (enabled=0 にしてあるので、明示的に --enablerepo=newbie をつけないと有効にならない。)
    m-hotta@celsior:~$ sudo rpm --import http://repos.net-newbie.com/RPM-GPG-KEY-newbie
    m-hotta@celsior:~$ sudo yum --enablerepo=newbie update
    (元々sambaが入っていなかった場合:)
    m-hotta@celsior:~$ sudo yum --enablerepo=newbie install samba-client samba-doc samba-swat
    
up