はじめに
インターネットにアクセスできるサーバにyumのリポジトリを作成し、インタ^ネットに接続できない他のサーバから参照されるような構成にしたいという要望が有ったので、試しにyumのリポジトリを作成してみました。
メニュー
yumリポジトリの作成
- yum updateで最新化
- createrepo のインストール
- yum-utilsをインストール
- パッケージの配置
- リポジトリの作成
- Apacheの環境設定
環境
Google Computer Engin
CentOS7
Apacheによるアクセス
それでは始めてみましょう
リポジトリの作成
インターネットで接続できるマシンにyumのリポジトリを作成します。
1. yum update でパッケージの最新化
$ sudo yum update
** kernelを上げないための設定**
下記のように/etc/yum.confに追記してください。
※gccなどカーネルに付随するパッケージをダウンロードする際は、下記の設定を外す必要があります
exclude=kernel* centos*
「centos*」は、centOS7.3で必要になりました
2. createrepo のインストール
yumのリポジトリを作るには、createrepoコマンドを使います。
createrepo コマンドは以下のようにしてインストールします
$ sudo yum install createrepo
3.yum-utilのインストール
yumdownloadを使用するのでyum-utilsをインストールします。
$ sudo yum install yum-utils
4.パッケージの配置
リポジトリは、任意のパスに作成できます。
ローカルからしかアクセスできない場所に作成してもいいし、apache等のWEBサービスの管理下にリポジトリを作成すれば、HTTP/HTTPS経由で他のシステムからもリポジトリへアクセスできるようになります。
今回はApache経由で他サーバからアクセスさせるので、Apacheでアクセスできる場所にリポジトリを作成します。
リポジトリとするディレクトリを決めて、配布したいrpmパッケージをそのディレクトリへ配置します。
ここでは/var/www/html/yum_repoディレクトリへ下記のパッケージを配置します
・http
・mod_proxy_html
・mod_ssl
※これだとhttpに関連するパッケージが見当たらないというエラーになる
なので、下記コマンドで必要なパッケージをダウンロードする
※yumdownloader に-–resolveを付けると依存関係も解決してダウンロードする
$ sudo mkdir -p /var/www/html/yum_repo
$ sudo chown $(whoami). /var/www/html/yum_repo
$ cd /var/www/html/yum
$ rpm -qa|grep -v ^gpg-pubkey|sudo xargs -L3 -P5 yumdownloader --cacheonly --
5.リポジトリの作成
createrepo コマンドを使って、yum のリポジトリを作成します。
リポジトリのパスとして指定したディレクトリに配置されているrpmパッケージの情報を読み取って、メタデータが作成され、リポジトリとして動作する形になります。リポジトリとするディレクトリのパスの指定は必須です。
$ sudo createrepo /var/www/html/yum_repo
Spawning worker 0 with 3 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
$ ll
合計 2936
-rw-r--r--. 1 root root 2836228 8月 24 03:01 httpd-2.4.6-67.el7.centos.2.x86_64.rpm
-rw-r--r--. 1 root root 48780 8月 24 03:09 mod_proxy_html-2.4.6-67.el7.centos.2.x86_64.rpm
-rw-r--r--. 1 root root 111596 8月 24 03:09 mod_ssl-2.4.6-67.el7.centos.2.x86_64.rpm
drwxr-xr-x. 2 root root 4096 9月 29 06:08 repodata
6.Apacheの環境設定
公開用にApacheの設定ファイルを変更します。
yum リポジトリのディレクトリをエイリアスにします。
sudoedit /etc/httpd/conf/httpd.conf
Alias /yum /var/www/html/yum_repo
<Directory /var/www/html/yum_repo>
Options +Indexes
Order allow,deny
Allow from all
</Directory>
Apacheを再起動します
sudo systemctl restart httpd.service
yumリポジトリにアクセスするサーバの設定
1.作成したリポジトリにアクセスしてみる
yum リポジトリを使う側は /etc/yum.repos.d/ にリポジトリの設定ファイルを作成ます。
ここではリポジトリの名前を local にしています。
$ sudoedit /etc/yum.repos.d/local.repo
次のような内容で作成します。yum.example.jp は適当読み替えてください。
[local]
name=local
baseurl=http://yum.example.jp/yum_repo/
gpgcheck=0
priority=1
なお priority=1 を指定することで local リポジトリを 最優先 にしています。priority については下記を参照してください。
yum update すると、local リポジトリから最新のパッケージがダウンロードされます。
sudo yum check-update
sudo yum update
これで初期設定は完了です
yumリポジトリの更新・追加
作成したリポジトリを更新するには、リポジトリとしたディレクトリ内のrpmパッケージを更新し、createrepo コマンドを再実行するだけです。
リポジトリとしたディレクトリ内へ、パッケージを追加したり、おいてあるrpmパッケージを上書き更新、あるいは削除するたびに、手順5の「リポジトリの作成」のコマンドを再度実行し、リポジトリのメタデータを作成しなおす必要があります。
この際、「--update」オプションを使うと差分だけが処理の対象となり、システムへの負荷が軽減されます。
新しくパッケージを追加
新しくFTPクライアントをインストールします
$ sudo yumdownloader ncftp
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.scalabledns.com
* epel: mirrors.cat.pdx.edu
* extras: repos.lax.quadranet.com
* updates: mirror.keystealth.org
ncftp-3.2.5-7.el7.x86_64.rpm | 340 kB 00:00:01
$ ls -l
合計 3276
-rw-r--r--. 1 root root 2836228 8月 24 03:01 httpd-2.4.6-67.el7.centos.2.x86_64.rpm
-rw-r--r--. 1 root root 48780 8月 24 03:09 mod_proxy_html-2.4.6-67.el7.centos.2.x86_64.rpm
-rw-r--r--. 1 root root 111596 8月 24 03:09 mod_ssl-2.4.6-67.el7.centos.2.x86_64.rpm
-rw-r--r--. 1 root root 347668 4月 15 2014 ncftp-3.2.5-7.el7.x86_64.rpm
drwxr-xr-x. 2 root root 4096 9月 29 06:08 repodata
リポジトリを更新
$ sudo createrepo --update /var/www/html/yum_repo
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
後は、リポジトリを使う側で、yum clean all を実行してから、 yum install なり yum update なりします。
以上