2 検証環境
2.1 ネットワーク構成
サーバとクライアントの2台構成です。サーバをリポジトリサーバとして動作させます。
192.168.122.0/24 リポジトリサーバ client(eth0) -------------------------------------(eth0) server .153 .128
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技術ブログ