hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

リポジトリサーバの構築方法



1 はじめに

リポジトリサーバを構築して動作確認をしてみます。リポジトリサーバとは、ソフトウェアを保管しているサーバのことです。

2 検証環境

2.1 ネットワーク構成

サーバとクライアントの2台構成です。サーバをリポジトリサーバとして動作させます。

                        192.168.122.0/24
                            リポジトリサーバ
client(eth0) -------------------------------------(eth0) server
        .153                                       .128

2.2 版数

サーバ、クライアントともに下記版数です。

CentOS版数は以下のとおりです。

[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

カーネル版数は以下のとおりです。

[root@server ~]# uname -r
3.10.0-1160.el7.x86_64

3 インストール方法

サーバにhttpdパッケージをインストールします。

[root@server ~]# yum -y install httpd

サーバにcreaterepoパッケージをインストールします。

[root@server ~]# yum -y install createrepo

createrepoの版数を確認します。

[root@server ~]# createrepo --version
createrepo 0.9.9

yumdownloaderコマンドを使うため、yum-utilsパッケージをインストールします。

[root@server ~]# yum -y install yum-utils

4 サーバの設定

httpdサービスを起動します。

[root@server ~]# systemctl start httpd

httpdプロセスがListenしているポート番号を確認すると、TCPの80番ポートでListenしていることがわかります。なお、lsofコマンドの使い方は、lsofコマンドの使い方 - hana_shinのLinux技術ブログを参照してください。

[root@server ~]# lsof -c httpd -a -i -a -nP
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   1260   root    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)
httpd   1261 apache    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)
httpd   1262 apache    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)
httpd   1263 apache    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)
httpd   1264 apache    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)
httpd   1265 apache    4u  IPv6  25192      0t0  TCP *:80 (LISTEN)

TCPの80番ポートへのアクセスを許可する設定をします。なお、firewall-cmdコマンドの使い方は、firewall-cmdの使い方 - hana_shinのLinux技術ブログを参照してください。

[root@server ~]# firewall-cmd --add-port=80/tcp
success

ランタイムルールをパーマネントルールに保存します。

[root@server ~]# firewall-cmd --runtime-to-permanent
success

開放したポート番号を確認します。TCPの80番ポートが解放されていることがわかります。

[root@server ~]# firewall-cmd --list-ports
80/tcp

テスト用のディレクトリを作成します。

[root@server ~]# mkdir /var/www/html/repo

リポジトリのデータベースを/var/www/html/repo配下に作成します。

[root@server ~]# createrepo --database /var/www/html/repo/
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

/var/www/html/repo配下を確認すると、リポジトリのデータベースが作成されたことがわかります。

[root@server ~]# ls /var/www/html/repo/repodata/
01a3b489a465bcac22a43492163df43451dc6ce47d27f66de289756b91635523-filelists.sqlite.bz2
401dc19bda88c82c403423fb835844d64345f7e95f5b9835888189c03834cc93-filelists.xml.gz
5dc1e6e73c84803f059bb3065e684e56adfc289a7e398946574d79dac6643945-primary.sqlite.bz2
6bf9672d0862e8ef8b8ff05a2fd0208a922b1f5978e6589d87944c88259cb670-other.xml.gz
7c36572015e075add2b38b900837bcdbb8a504130ddff49b2351a7fc0affa3d4-other.sqlite.bz2
dabe2ce5481d23de1f4f52bdcfee0f9af98316c9e0de2ce8123adeefa0dd08b9-primary.xml.gz
repomd.xml

テスト用のbcパッケージを/var/www/html/repo配下にダウンロードします。なお、bcパッケージを選定した理由は、サイズが小さく短時間でダウンロードできるからです。

[root@server ~]# yumdownloader --destdir=/var/www/html/repo bc

ダウンロードしたrpmパッケージを確認します。/var/www/html/repo配下にbcパッケージがダウンロードできたことがわかります。

[root@server ~]# ls -l /var/www/html/repo/
合計 120
-rw-r--r--. 1 root root 117272  7月  4  2014 bc-1.06.95-13.el7.x86_64.rpm
drwxr-xr-x. 2 root root   4096  3月 29 22:05 repodata

/var/www/html/repo配下にrpmパッケージを格納したので、リポジトリのデータベースをアップデートします。

[root@server ~]# createrepo --update /var/www/html/repo/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Spawning worker 2 with 0 pkgs
Spawning worker 3 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

5 クライアントの設定

リポジトリの定義ファイルを作成します。

[root@client ~]# vi /etc/yum.repos.d/test.repo
[root@client ~]# cat /etc/yum.repos.d/test.repo
[test]
name=Test Repo
baseurl=http://192.168.122.128/repo
gpgcheck=0
enabled=1

yumのキャッシュをクリアします。

[root@client ~]# yum clean all

リポジトリの一覧を表示します。リポジトリ一覧に、テスト用に作成したtestリポジトリが表示されていることがわかります。

[root@client ~]# yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
リポジトリー ID                           リポジトリー名                                                           状態
base/7/x86_64                             CentOS-7 - Base                                                          10,072
epel/x86_64                               Extra Packages for Enterprise Linux 7 - x86_64                           13,770
extras/7/x86_64                           CentOS-7 - Extras                                                           515
test                                      Test Repo                                                                     1
updates/7/x86_64                          CentOS-7 - Updates                                                        4,857
repolist: 29,215

testリポジトリに格納されているパッケージを表示します。bcパッケージが格納されていることがわかります。

[root@client ~]# yum --disablerepo=* --enablerepo=test --showduplicates list bc
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
インストール済みパッケージ
bc.x86_64                                            1.06.95-13.el7                                             @anaconda
利用可能なパッケージ
bc.x86_64                                            1.06.95-13.el7                                             test

6 動作確認

クライアントでwgetコマンドを実行して、リポジトリサーバからbcパッケージをダウンロードしてみます。

[root@client ~]# wget http://192.168.122.128/repo/bc-1.06.95-13.el7.x86_64.rpm
--2023-03-29 22:45:57--  http://192.168.122.128/repo/bc-1.06.95-13.el7.x86_64.rpm
192.168.122.128:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 117272 (115K) [application/x-rpm]
`bc-1.06.95-13.el7.x86_64.rpm' に保存中

100%[===============================================================================>] 117,272     --.-K/s 時間 0.008s

2023-03-29 22:45:57 (14.5 MB/s) - `bc-1.06.95-13.el7.x86_64.rpm' へ保存完了 [117272/117272]

ダウンロードしたファイルを確認します。bcパッケージがダウンロードできたことがわかります。

[root@client ~]# ls -l bc-1.06.95-13.el7.x86_64.rpm
-rw-r--r--. 1 root root 117272  7月  4  2014 bc-1.06.95-13.el7.x86_64.rpm

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ