2013年1月2日水曜日

"Direct Hosting & Cache Distribution"パターンで"yum"リポジトリの作成(リポジトリの作成から"yum update"まで)

スズキです。

下記で器(S3 & CloudFront & R53)の作成まで終わったので、
"Direct Hosting & Cache Distribution"パターンで"yum"リポジトリの作成
(S3/CloudFront/R53まで)
次は、EC2上でリポジトリを作成してS3にアップロードし、実際に利用できるよにします。


必要なパッケージのインストール


リポジトリの作成に"createrepo"、リポジトリのページ作成に"repoview"、
S3へのアップロードのために"s3cmd"をインストールします。
# yum -y install createrepo repoview s3cmd
...

RPM(ディレクトリ)の確認


こちらで紹介したディレクトリ構成(/opt/suz-lab/share/rpmbuild/)を利用します。
SRPMのインストール先を変更する(CentOS6)
# cd /opt/suz-lab/share/rpmbuild/RPMS/x86_64
# ls -1
bash-4.1.2-9.el6_2.suzlab_1.x86_64.rpm
bash-doc-4.1.2-9.el6_2.suzlab_1.x86_64.rpm

リポジトリの作成


"-d"オプションをつけるとSQLiteのデータベースファイルも作成します。
次の"repoview"で利用します。
# createrepo -d ./
2/2 - bash-doc-4.1.2-9.el6_2.suzlab_1.x86_64.rpm                                
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

閲覧用HTMLの作成


"--title"は、このHTMLページのタイトル、"--url"はRSSで利用されるURLです。
# repoview --title="SUZ-LAB Package" --url="http://yum.suz-lab.com/yum/6/x86_64" ./
Examining repository...done
Opening primary database...done
Opening changelogs database...done
Copying layout...done
Examining state db...done
Collecting group information...done
Collecting letters...done
Writing package bash-doc.html
Writing group development.languages.group.html
Writing package bash.html
Writing group system_environment.shells.group.html
Writing group letter_b.group.html
Collecting latest packages...done
Writing index.html...done
Generating rss feed...done

ディレクトリ構成の確認


"yum"リポジトリとして、下記の構成が出来上がりました。
# tree ./
./
├── bash-4.1.2-9.el6_2.suzlab_1.x86_64.rpm
├── bash-doc-4.1.2-9.el6_2.suzlab_1.x86_64.rpm
├── repodata
│   ├── filelists.sqlite.bz2
│   ├── filelists.xml.gz
│   ├── other.sqlite.bz2
│   ├── other.xml.gz
│   ├── primary.sqlite.bz2
│   ├── primary.xml.gz
│   └── repomd.xml
└── repoview
    ├── bash-doc.html
    ├── bash.html
    ├── development.languages.group.html
    ├── index.html
    ├── latest-feed.xml
    ├── layout
    │   └── repostyle.css
    ├── letter_b.group.html
    ├── state.sqlite
    └── system_environment.shells.group.html

S3へのアップロード


次のコマンドでアップロードします。
# s3cmd -P sync ./ s3://ap-northeast-1.yum.suz-lab.com/yum/6/x86_64/
...
"s3cmd"に関しては、こちら("s3cmd"のまとめ)を参照。


HTMLページの確認


CloudFront経由のアクセスになります。

http://yum.suz-lab.com/yum/6/binary/repoview/


リポジトリの登録


適当なCentOS6のサーバに下記のファイルを作成します。
# cat /etc/yum.repos.d/suz-lab.repo 
[suz-lab]
name=SUZ-LAB Packages for CentOS $releasever - $basearch
baseurl=http://yum.suz-lab.com/yum/6/$basearch
enabled=1
gpgcheck=0

下記のように出力されれば、もう、リポジトリが使える状態です。
# yum repolist
...
repo id  repo name                               status
...
suz-lab  SUZ-LAB Packages for CentOS 6 - x86_64       2
...

Bashのアップデートと確認


下記のようにアップデートできます。
# yum update bash
...
Running Transaction
  Updating   : bash-4.1.2-9.el6_2.suzlab_1.x86_64  1/2 
  Cleanup    : bash-4.1.2-9.el6_2.x86_64           2/2 
  Verifying  : bash-4.1.2-9.el6_2.suzlab_1.x86_64  1/2 
  Verifying  : bash-4.1.2-9.el6_2.x86_64           2/2 

Updated:
  bash.x86_64 0:4.1.2-9.el6_2.suzlab_1           

OSリブート後、下記のように出力されれば成功です。
# tail /var/log/messages
...
Jan  1 23:33:17 ip-10-200-0-5 -bash: HISTORY: PID=880 UID=0 tail -f /var/log/messages

これは実装シナリオになるのでは?
--------
http://www.suz-lab.com

0 コメント: