share facebook facebook2 twitter menu hatena pocket slack

2013.01.08 TUE

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

鈴木 宏康

WRITTEN BY鈴木 宏康

Direct Hosting & Cache Distributionパターンでyumリポジトリの作成(S3/CloudFront/R53まで)の記事で、
S3 & CloudFront & R53の作成まで行いました。

今回はEC2上でリポジトリを作成してS3にアップロードし、実際に利用できるようにします。

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

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

   # yum -y install createrepo repoview s3cmd
...

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

SRPMのインストール先を変更する(CentOS6)の記事で紹介したディレクトリ構成(/opt/suz-lab/share/rpmbuild/)を
利用します。

 # 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

○リポジトリの作成

次のrepoviewで利用しますが、-dオプションを付けるとSQLiteのデータベースファイルも作成します。

# 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

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。