ローカルにyumリポジトリを作成してみた

## createrepoのインストール

```
yum install createrepo
```

## ディレクトリの準備

- パッケージを置くディレクトリを作成

```
mkdir /usr/local/repo
```

## 設置したいパッケージを配置

yumdownloaderコマンドがなければ `yum install yum-utils` でインストール
今回はrsyncを入れてみる。

```
cd /usr/local/repo
yumdownloader rsync
ll /usr/local/repo
==========
-rw-r--r--. 1 root root 413912  4月  4  2020 rsync-3.1.2-10.el7.x86_64.rpm
==========
> rsyncのrpmファイルがあることを確認
```

## リポジトリの作成

- createrepoコマンドでリポジトリの作成

`createrepo リポジトリのパス` で作成できます。

```
createrepo /usr/local/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
==========
```

## ローカルでリポジトリが使えるように設定を追加

- 設定を追加

```
touch /etc/yum.repos.d/mycentos.repo
vi /etc/yum.repos.d/mycentos.repo
==========
[mycentos]
enabled=1
gpgcheck=0
name=my repo
baseurl=file:///usr/local/repo
==========
```

- yumリポジトリを更新

```
yum clean all
```

- yumリポジトリが追加されていることを確認

```
yum repolist
==========
リポジトリー ID                      リポジトリー名                          状態
base/7/x86_64                        CentOS-7 - Base                         10,072
extras/7/x86_64                      CentOS-7 - Extras                          448
mycentos                             my repo                                      1
updates/7/x86_64                     CentOS-7 - Updates                         293
repolist: 10,814
==========
> mycensos があることを確認
```

## ローカルリポジトリを使ったインストール

- インストール

`--disablerepo=*` のオプションを使うとyumリポジトリの無効化
`--enablerepo=リポジトリID` でリポジトリの有効化を行う
今回は無理やりmycentosリポジトリしか見ないようにしています。

```
yum --disablerepo=* --enablerepo=mycentos install rsync
==========
...
===================================================================================
 Package         アーキテクチャー バージョン              リポジトリー        容量
===================================================================================
インストール中:
 rsync           x86_64           3.1.2-10.el7            mycentos           404 k

トランザクションの要約
===================================================================================
インストール  1 パッケージ
...
==========
> リポジトリーが「mycentos」になっているので、作成したリポジトリからインストールができました！
```

## ローカルリポジトリにパッケージを追加する

- パッケージを追加する

次はdigコマンドを使いたいので入れてみる。


```
cd /usr/local/repo
yumdownloader bind-utils
yumdownloader bind-libs
ll /usr/local/repo
==========
-rw-r--r--. 1 root root 159224 10月 15 04:03 bind-libs-9.11.4-26.P2.el7.i686.rpm
-rw-r--r--. 1 root root 159992 10月 15 03:46 bind-libs-9.11.4-26.P2.el7.x86_64.rpm
-rw-r--r--. 1 root root 265984 10月 15 03:47 bind-utils-9.11.4-26.P2.el7.x86_64.rpm
drwxr-xr-x. 2 root root   4096 11月 17 23:10 repodata
-rw-r--r--. 1 root root 413912  4月  4  2020 rsync-3.1.2-10.el7.x86_64.rpm
==========
> rsyncとrepodata、今回追加したbind-libsとbind-utilsが入ってることを確認
```

- リポジトリをアップデート

アップデートする際は、 `--update` コマンドを使用する

```
createrepo --update /usr/local/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
==========
```

- yumリポジトリを更新

```
yum clean all
```

- yumリポジトリが追加されていることを確認

```
yum repolist
==========
リポジトリー ID                      リポジトリー名                          状態
base/7/x86_64                        CentOS-7 - Base                         10,072
extras/7/x86_64                      CentOS-7 - Extras                          448
mycentos                             my repo                                      4
updates/7/x86_64                     CentOS-7 - Updates                         293
repolist: 10,817
==========
> mycentosの状態が4になっています(rpmが4つ入ったので)
```

- ローカルリポジトリを使ってインストール

```
yum --disablerepo=* --enablerepo=mycentos install bind-utils
==========
===================================================================================
 Package           アーキテクチャー
                                 バージョン                  リポジトリー     容量
===================================================================================
インストール中:
 bind-utils        x86_64        32:9.11.4-26.P2.el7         mycentos        260 k
依存性関連でのインストールをします:
 bind-libs         x86_64        32:9.11.4-26.P2.el7         mycentos        156 k

トランザクションの要約
===================================================================================
インストール  1 パッケージ (+1 個の依存関係のパッケージ)
==========
```

## 参考

- [ローカル環境内に yum リポジトリを作成する](http://dotnsf.blog.jp/archives/2807753.html)
- [yum｜yum リポジトリを作成する](https://kazmax.zpp.jp/linux_beginner/yum_createrepo.html)
- [yumdownloader コマンドを使って rpm をダウンロードする](https://qiita.com/toshihirock/items/f99d5d622395647b5cb5)
- [yumリポジトリをローカルで作成する](https://itbasesta.com/local-repository)
- [【CentOS】yumでローカルリポジトリの作成・使用方法](https://qiita.com/jz4o/items/33c3c7fc8a40145389d7)
- [CentOS7用のyumリポジトリサーバーをローカルネットワーク上に構築する方法](https://4thsight.xyz/6530)
- [yumリポジトリサーバの構築方法](https://qiita.com/hana_shin/items/f714376d041941320290)
- [yum｜yum リポジトリの有効／無効](https://kazmax.zpp.jp/linux_beginner/yum_repository_enable_disable.html)