【豆知識】yumで使われている関数を読んでみたら勉強になった話　(/etc/yum.conf)

#【事象】
普段はキャッシュを持たないように、インストールされたら消える又は、定期的に消されているyum や rpmでインターネットから持ってきているパッケージは、サーバのどこに保存されるのか気になった。

キャッシュの保存先は、下記ディレクトリ
`/var/cache/yum/アーキ/OSのバージョン/リポジトリ/packages/`

#【詳細】
永続的にパッケージを保存する方法も有ったので、少しだけ実験してみた。←そしたら勉強になった。
設定ファイル `/etc/yum.conf` にて、パッケージのダウンロード先とデータベースを格納するディレクトリへのPATHが設定されている模様。
※ちなみにこのconfへの設定反映は即時反映です。

■ここでyumの設定ファイル `/etc/yum.conf` を見てみる。

|項目  |内容  |
|---|---|
|cachedir  |ダウンロードファイル等を保存するファイルパス  |
|keepcache  |ダウンロードファイル等を保存するか否か1 で保存。デフォルトは、0  |

```
[root@ef16029eef68 7]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
override_install_langs=en_US.utf8
tsflags=nodocs
```
■yumの設定ファイル `/etc/yum.conf` の変数も見てみる
　この変数が勉強になりました〜。

```
[root@ef16029eef68 7]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
```

気になる変数は、下記2つ

|項目  |値  |
|---|---|
|$basearch  |システムのベースアーキテクチャー  |
|$releasever  |Red Hat Enterprise Linux のリリースバージョン  |

それぞれをちょろと調べてみる。

**$basearch**
公式によると、「$basearch を使用すると、システムのベースアーキテクチャーを参照できます。例えば、i686 及び i586 両マシンは i386 のベースアーキテクチャーを持っており、AMD64 及び Intel64 マシンは x86_64 のベースアーキテクチャーを持っています。」

とのこと。しかし、どこで設定なんだろうか。
すると公式にこんなことが

↓↓

**$releasever**
This is replaced with the package's version, as listed in distroverpkg. This defaults to the version of the redhat-release package.

**$arch**
This is replaced with your system's architecture, as listed by os.uname() in Python.
**$basearch**
This is replaced with your base architecture. For example, `if $arch=i686 then $basearch=i386.`
→これぞシンプル設計ェ。。。えぇ..(困惑）

気になるので、pythonの関数とか、見ちゃいましょう。

続いて、変数**$releasever**を調べる。

$releasever は Red Hat のリリースバージョンが格納されています。
yumの設定ファイル(/etc/yum.conf)の `distroverpkg=centos-release` で指定されたパッケージのバージョン番号を使う模様です。
今回は、centos-releaseなので、centos-releaseのパッケージのバージョン番号を関数とかいろいろ使って調べてみました。

ペタッとして終わろうと思います。

```
[root@ef16029eef68 7]# /usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["basearch"]'
x86_64
```

```
[root@ef16029eef68 7]# /usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
7
```
や〜これは勉強になりました〜。

```
[root@ef16029eef68 7]#  grep distroverpkg /etc/yum.conf
distroverpkg=centos-release
[root@ef16029eef68 7]#
[root@ef16029eef68 7]# yum info centos-release
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
Installed Packages
Name        : centos-release
Arch        : x86_64
Version     : 7
Release     : 5.1804.4.el7.centos
Size        : 39 k
Repo        : installed
From repo   : Updates
Summary     : CentOS Linux release file
License     : GPLv2
Description : CentOS Linux release files

Available Packages
Name        : centos-release
Arch        : x86_64
Version     : 7
Release     : 5.1804.5.el7.centos
Size        : 25 k
Repo        : updates/7/x86_64
Summary     : CentOS Linux release file
License     : GPLv2
Description : CentOS Linux release files
```

#参考
How do *you* retrieve the release version on your systems?
https://access.redhat.com/discussions/1312334

6.3.3. YUM 変数の使用
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/sec-using_yum_variables

12.5. Useful yum Variables
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-yum-useful-variables.html