CentOS 7 で複数バージョンのrdiff-backup を使う

使用OS
```
# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
```

インストール元は epel
```
# yum --enablerepo=epel list |grep rdiff-backup
rdiff-backup.x86_64                      1.2.8-13.el7                    @epel
```

rdiff-backup コマンドのインストール先は/usr/bin 以下
```
# /usr/bin/rdiff-backup --version 
rdiff-backup 1.2.8
```

このサーバから複数サーバのバックアップを行っています。こんな感じ。
```
# rdiff-backup 192.168.1.200::/home/ /home/backup/192.168.1.200/home/
```

CentOS7 1.2.8 と 2.0.5 が混在
Almalinux 8  2.0.5 と 2.2.2 が混在

epelのリポジトリにあるバージョンが変わっていっている（どのタイミングかは不明、pythonのバージョン依存があるのでCentOS7に2.2系はepelからは入らないと思われる）

CentOS7 のバージョン違い
```
# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
# rdiff-backup --version
rdiff-backup 2.0.5
```

Almalinux 8 の手持ち
```
# cat /etc/redhat-release 
AlmaLinux release 8.6 (Sky Tiger)
# rdiff-backup --version
rdiff-backup 2.0.5
```
```
# cat /etc/redhat-release 
AlmaLinux release 8.7 (Stone Smilodon)
# rdiff-backup --version
rdiff-backup 2.2.2
```

rdiff-backup公式サイト
"GitHub - rdiff-backup/rdiff-backup: Reverse differential backup tool, over a network or locally.":https://github.com/rdiff-backup/rdiff-backup

rdiff-backup コマンドはリモートバックアップが可能です
バージョン間の互換性がないため、バックアップする側とバックアップされる側が同一のバージョンを使う必要があります
Almalinux 8  rdiff-backup 2.0.5を使い始めたので公式サイトを参考に
"rdiff-backup/migration.adoc at master · rdiff-backup/rdiff-backup · GitHub":https://github.com/rdiff-backup/rdiff-backup/blob/master/docs/migration.adoc

rdiff-backup 2.0.5のインストールをした
CentOS7でyumからインストールしたpython3（pythonのバージョンは3.6）からpythonの仮想環境（venv）を作成。仮想環境のpipからrdiff-backupをインストールする

python3はCentOS7のもの
```
# yum list |grep python3
python3.x86_64                           3.6.8-18.el7                  @updates
```

仮想環境用にディレクトリ作成
```
# mkdir /usr/local/rdiff-backup-2.0 
仮想環境作成
# python3 -m venv  /usr/local/rdiff-backup-2.0
# cd /usr/local/rdiff-backup-2.0
pyvenv.cfg ↑で生成されたまま特に修正はしていない
# cat /usr/local/rdiff-backup-2.0/pyvenv.cfg
home = /usr/bin
include-system-site-packages = false
version = 3.6.8
```

pip search は使えなくなったので、サイトでrdiff-backupのバージョンを確認
"rdiff-backup · PyPI":https://pypi.org/project/rdiff-backup/2.0.5/#files
※CP36（python36） のwheelファイルがあればpython36で利用可能。

インストール
```
/usr/local/rdiff-backup-2.0/bin/pip install rdiff-backup==2.0.5

# ./bin/pip list
pip (9.0.3)
rdiff-backup (2.0.5)
setuptools (39.2.0)
```

ここにインストールされるのでこのコマンドを使ってrdiff-backup2.0.5のリモートサーバのバックアップができる
```
# /usr/local/rdiff-backup-2.0/bin/rdiff-backup --version
rdiff-backup 2.0.5
```

とここまでがAlmalinux 8を使い始めたころの話。その後しばらく運用…

このまえAlmalinux 8をアップデートしたらrdiff-backup 2.2.2になってしまった…
rdiff-backup 2.2.2をインストールする。
pythonコマンドはpyenvで使いたいバージョンをインストールする。それ以降は↑と同じ。
「Python 3.7 or higher」とのことなのでpython39をインストールする
```
# mkdir -p /usr/local/opt
# git clone https://github.com/pyenv/pyenv.git /usr/local/opt/pyenv
# cd /usr/local/opt/pyenv
# git log --oneline --decorate --tags
# git checkout v2.3.11

build に必要なパッケージをインストール
# yum install make gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel libuuid-devel gdbm-devel libnsl2-devel

# ./bin/pyenv install 3.9.16
# /root/.pyenv/versions/3.9.16/bin/python3.9 --version
Python 3.9.16
```

export しないと仮想環境は使えなそうだが、直接コマンドを実行すれば問題ない

rdiff-backup-2.2ディレクトリ作成、仮想環境を作る
```
# mkdir /usr/local/rdiff-backup-2.2
# /root/.pyenv/versions/3.9.16/bin/python3.9 -m venv  /usr/local/rdiff-backup-2.2/
# cd  /usr/local/rdiff-backup-2.2
pyvenv.cfg ↑で生成されたまま特に修正はしていないß
# cat pyvenv.cfg 
home = /root/.pyenv/versions/3.9.16/bin
include-system-site-packages = false
version = 3.9.16
```

pipでインストール
```
# ./bin/pip install rdiff-backup
# ./bin/pip list
Package      Version
------------ -------
pip          22.3.1
PyYAML       6.0
rdiff-backup 2.2.2
setuptools   58.1.0

# /usr/local/rdiff-backup-2.2/bin/rdiff-backup --version
rdiff-backup 2.2.2
```

これを使う。コマンドを使うとinfoされるがコマンド体系が変わるそうなので注意。