閉じた環境のAIXにcloud-initを導入する

# 課題
AIXにcloud-initを導入する手順は、公式にはyumをセットアップして導入とある為、閉じた環境等では必要なrpmやそのバージョンの確認などが容易ではない。

# ソリューション
1. インターネットに接続され、yumがセットアップされたAIX環境において、yum deplistやyumdownloader --urlsにより、必要なrpmのurlを入手 (オプション)
2. 外部環境でwgetなどを用いてdownload
3. 対象環境に持ち込み適用

# 手順

## 1. 必要なファイルセットとそのurlを入手 (オプション)

インターネットに接続され、yumがセットアップされたAIX環境において、以下のスクリプトにてURLを出力。
cloud-init.ppc 0.7.5-4.3に関しては出力を記載したので、スキップ可能。
以降のバージョンが提供され、それを使用する場合などには実行が必要。

(スクリプトの美しさなどは考慮していない。)

```sh
#! /usr/bin/sh

LIST1=cloud-init 
#LIST1="cloud-init 0.7.5-4.3"     # バージョンを指定する場合の例1
#LIST1="cloud-init.ppc 0.7.5-4.3" # バージョンを指定する場合の例2

LIST0=""

which yumdownloader >/dev/null || yum -y install yum-utils # yumdownloader を導入

until [[ $LIST0 = $LIST1 ]]
do
  DIFF=$( (echo "$LIST0"; echo "$LIST0"; echo "$LIST1") | sort | uniq -u | sed '/^$/d' )
  LIST0="$LIST1"
  LIST1=$(
    (
      echo "$LIST0" | sed '/^$/d'
      echo "$DIFF" | while read LINE
      do

        yum deplist $LINE | awk '$1 == "provider:" {print $2,$3}'
      done
    ) | sed '/^$/d' | sort -u
  )
done

echo "$LIST1" | while read LINE
do
  echo wget $(yumdownloader --urls $(echo $LINE | sed -e 's/\.[^.]* / /' -e 's/ [0-9]*:/ /' -e 's/ /-/' ))
  # yumdownloader --urls $(echo $LINE | sed -e 's/\.[^.]* / /' -e 's/ [0-9]*:/ /' -e 's/ /-/' )
  # yumdownloader        $(echo $LINE | sed -e 's/\.[^.]* / /' -e 's/ [0-9]*:/ /' -e 's/ /-/' ) # rpmをダウンロード>する場合
done
```

stdoutにwget + URLの情報を書き出すので、その内容を保存


## 2. 外部環境でwgetなどを用いてdownload

インターネット接続された環境(作業PCなど)において1の出力を実行しrpmを入手。
以下に、1の実行結果を記載している。

2020/08/10取得

```
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bash/bash-5.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bzip2/bzip2-1.0.8-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//cloudinit/cloud-init-0.7.5-4.3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//expat/expat-2.2.9-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gdbm/gdbm-1.18.1-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gettext/gettext-0.19.8.1-5.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//glib2/glib2-2.56.1-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//texinfo/info-6.6-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libffi/libffi-3.2.1-3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libgcc-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libgcc6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libgcc7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libiconv/libiconv-1.16-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libstdcplusplus-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libstdcplusplus6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libstdcplusplus7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libunistring/libunistring-0.9.9-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-devel-2.7.8-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-2.9.9-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libyaml/libyaml-0.2.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//ncurses/ncurses-6.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nspr/nspr-4.21-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nss/nss-3.13.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//pkg-config/pkg-config-0.29.2-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-PyYAML-3.11-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-argparse-1.2.1-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-boto-2.34.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-cheetah-2.4.4-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-configobj-5.0.5-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-jsonpatch-1.8-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-jsonpointer-1.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-oauth-1.0.1-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-prettytable-0.7.2-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-pyserial-2.7-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-requests-2.4.3-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-setuptools-0.9.8-2.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-six-1.10.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-xml-0.8.4-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-2.7.18-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//readline/readline-8.0-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//sqlite/sqlite-3.32.1-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-devel-5.2.5-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-libs-5.2.5-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//zlib/zlib-1.2.11-1.aix6.1.ppc.rpm
```


```
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bash/bash-5.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bzip2/bzip2-1.0.8-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//cloudinit/cloud-init-0.7.5-4.3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//expat/expat-2.2.9-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gdbm/gdbm-1.18.1-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gettext/gettext-0.19.8.1-5.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//glib2/glib2-2.56.1-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//texinfo/info-6.6-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libffi/libffi-3.2.1-3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libgcc-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libgcc6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libgcc7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libiconv/libiconv-1.14-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libstdcplusplus-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libstdcplusplus6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libstdcplusplus7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libunistring/libunistring-0.9.9-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-devel-2.7.8-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-2.9.9-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libyaml/libyaml-0.1.4-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//ncurses/ncurses-6.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nspr/nspr-4.21-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nss/nss-3.13.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//pkg-config/pkg-config-0.29.2-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-PyYAML-3.11-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-argparse-1.2.1-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-boto-2.34.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-cheetah-2.4.4-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-configobj-5.0.5-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-jsonpatch-1.8-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-jsonpointer-1.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-oauth-1.0.1-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-prettytable-0.7.2-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-pyserial-2.7-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-requests-2.4.3-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-setuptools-0.9.8-2.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-six-1.10.0-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-xml-0.8.4-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-2.7.17-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//readline/readline-8.0-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//sqlite/sqlite-3.28.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-devel-5.2.4-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-libs-5.2.4-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//zlib/zlib-1.2.11-1.aix6.1.ppc.rpm
```

カレントディレクトリーにrpmファイルがダウンロードされる

## 2. 持ち込み

入手したrpmファイルを対象AIXシステムに持ち込み

## 3. 適用

rpm -ivh *.rpmで失敗した覚えがあるので、問題があれば以下をcloud-initが導入されるまで繰り返す。

```
# ls *.rpm | while read LINE
> do
>   rpm -ivh $LINE
> done 2>&1 | tee -a rpm.log
```

なお、以下は同時に指定する必要があるかもしれない。

- xz-libs
- libunistring
- libxml2
- info
- zlib
- gettext	

こちらは、順序を考慮せず導入できるところから導入している。
導入された順序は以下にて確認可能

```
# grep "####" rpm.log
libgcc6                     ##################################################
libgcc7                     ##################################################
libstdc++6                  ##################################################
libstdc++7                  ##################################################
libyaml                     ##################################################
nspr                        ##################################################
python-PyYAML               ##################################################
python-argparse             ##################################################
python-boto                 ##################################################
python-cheetah              ##################################################
python-configobj            ##################################################
python-jsonpointer          ##################################################
python-oauth                ##################################################
python-prettytable          ##################################################
python-pyserial             ##################################################
python-requests             ##################################################
python-setuptools           ##################################################
python-six                  ##################################################
python-xml                  ##################################################
python-jsonpatch            ##################################################
cloud-init                  ##################################################
```


## その他の依存関係の表示方法

依存関係はrepoqueryにてツリー状に表示可能 (要 yum-utils)

```
# repoquery --tree-requires --recursive --resolve cloud-init
cloud-init-0.7.5-4.3.ppc [cmd line]
 \_  bash-5.0-1.ppc [1: bash]
 |   \_  libiconv-1.16-1.ppc [2: libiconv >= 1.14-1, libiconv.a(libiconv.so.2)]
 |   |   \_  gettext-0.19.8.1-5.ppc [2: gettext >= 0.19.8.1-1, libintl.a(libintl.so.8)]
 |   |   |   \_  glib2-2.56.1-2.ppc [2: glib2 >= 2.56.1-2, libglib-2.0.a(libglib-2.0.so.0)]
 |   |   |   |   \_  gettext-0.19.8.1-5.ppc [2: gettext >= 0.17, libintl.a(libintl.so.8)]
 |   |   |   |   \_  libffi-3.2.1-3.ppc [2: libffi >= 3.0.10-1, libffi.a(libffi.so.6)]
 |   |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  zlib-1.2.11-1.ppc [1: libz.a(libz.so.1)]
 |   |   |   \_  libiconv-1.16-1.ppc [2: libiconv >= 1.14, libiconv.a(libiconv.so.2)]
 |   |   |   \_  libunistring-0.9.9-2.ppc [2: libunistring >= 0.9.9-2, libunistring.a(libunistring.so.2)]
 |   |   |   |   \_  info-6.6-2.ppc [1: info]
 |   |   |   |   |   \_  bash-5.0-1.ppc [1: bash]
 |   |   |   |   |   \_  gettext-0.19.8.1-5.ppc [2: gettext >= 0.19.8.1-4, libintl.a(libintl.so.8)]
 |   |   |   |   |   \_  libiconv-1.16-1.ppc [2: libiconv >= 1.14, libiconv.a(libiconv.so.2)]
 |   |   |   |   |   \_  ncurses-6.2-1.ppc [2: libncurses.a(libncurses.so.6), ncurses >= 6.1-2]
 |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libiconv-1.16-1.ppc [2: libiconv >= 1.14-1, libiconv.a(libiconv.so.2)]
 |   |   |   \_  libxml2-2.9.9-1.ppc [2: libxml2 >= 2.9.7, libxml2.a(libxml2.so.2)]
 |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libiconv-1.16-1.ppc [2: libiconv >= 1.14-1, libiconv.a(libiconv.so.2)]
 |   |   |   |   \_  xz-libs-5.2.5-1.ppc [2: liblzma.a(liblzma.so.5), xz-libs >= 5.2.2-1]
 |   |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 8.3.0, libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  zlib-1.2.11-1.ppc [2: libz.a(libz.so.1), zlib >= 1.2.11-1]
 |   |   |   \_  libxml2-devel-2.7.8-1.ppc [1: libxml2.a(libxml2.so.2)]
 |   |   |   |   \_  libxml2-2.7.8-1.ppc [1: libxml2 = 2.7.8]
 |   |   |   |   \_  zlib-devel-1.2.11-1.ppc [1: zlib-devel]
 |   |   |   |   |   \_  zlib-1.2.11-1.ppc [1: zlib]
 |   |   |   \_  ncurses-6.2-1.ppc [2: libncurses.a(libncurses.so.6), ncurses >= 6.1-2]
 |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 8.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libstdc++-8.3.0-2.ppc [2: libstdc++ >= 8.3.0-1, libstdc++.a(libstdc++.so.6)]
 |   |   |   |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc = 8.3.0-2, libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libstdc++6-6.3.0-1.ppc [1: libstdc++.a(libstdc++.so.6)]
 |   |   |   |   |   \_  libgcc-8.3.0-2.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc6-6.3.0-1.ppc [2: libgcc6 = 6.3.0-1, libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   \_  libstdc++7-7.2.0-1.ppc [1: libstdc++.a(libstdc++.so.6)]
 |   |   |   |   |   \_  libgcc-8.3.0-2.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   |   |   \_  libgcc7-7.2.0-1.ppc [2: libgcc7 = 7.2.0-1, libgcc_s.a(shr.o)]
 |   |   \_  libgcc-8.3.0-2.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 \_  python-2.7.18-1.ppc [2: /usr/bin/python, python-argparse]
 |   \_  bzip2-1.0.8-2.ppc [2: bzip2 >= 1.0.8, libbz2.a(libbz2.so.1)]
 |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0-2, libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  expat-2.2.9-2.ppc [2: expat >= 2.2.9, libexpat.a(libexpat.so.1)]
 |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 8.3.0-1, libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  gdbm-1.18.1-1.ppc [2: gdbm >= 1.18.1, libgdbm.a(libgdbm.so.6)]
 |   |   \_  gettext-0.19.8.1-5.ppc [2: gettext >= 0.19.8.1-3, libintl.a(libintl.so.8)]
 |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0, libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  gettext-0.19.8.1-5.ppc [2: gettext >= 0.19.8.1, libintl.a(libintl.so.8)]
 |   \_  libffi-3.2.1-3.ppc [2: libffi >= 3.2.1, libffi.a(libffi.so.6)]
 |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 8.3.0, libgcc_s.a(shr.o)]
 |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  libstdc++-8.3.0-2.ppc [2: libstdc++ >= 8.3.0, libstdc++.a(libstdc++.so.6)]
 |   \_  libstdc++6-6.3.0-1.ppc [1: libstdc++.a(libstdc++.so.6)]
 |   \_  libstdc++7-7.2.0-1.ppc [1: libstdc++.a(libstdc++.so.6)]
 |   \_  ncurses-6.2-1.ppc [3: libncurses.so, libpanel.so, ncurses >= 6.2]
 |   \_  nss-3.13.2-1.ppc [1: libsqlite3.so]
 |   |   \_  nspr-4.21-1.ppc [6: libnspr4.a(libnspr4.so), libnspr4.so, libplc4.a(libplc4.so), libplc4.so, libplds4.so, nspr >= 4.9]
 |   |   |   \_  libgcc-8.3.0-2.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   \_  readline-8.0-2.ppc [2: libreadline.a(libreadline.so.8), readline >= 8.0]
 |   |   \_  info-6.6-2.ppc [2: /sbin/install-info, info >= 6.4]
 |   \_  sqlite-3.28.0-1.ppc [2: libsqlite3.so, sqlite >= 3.28.0]
 |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 6.3.0, libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  ncurses-6.2-1.ppc [2: libncurses.a(libncurses.so.6), ncurses >= 6.1]
 |   |   \_  readline-8.0-2.ppc [2: libreadline.a(libreadline.so.7), readline >= 7.0-5]
 |   |   \_  zlib-1.2.11-1.ppc [2: libz.a(libz.so.1), zlib]
 |   \_  zlib-1.2.11-1.ppc [2: libz.a(libz.so.1), zlib >= 1.2.11]
 \_  python-PyYAML-3.11-1.ppc [2: python-PyYAML, python-yaml]
 |   \_  libyaml-0.2.2-1.ppc [2: libyaml >= 0.1.4, libyaml.a(libyaml-0.so.2)]
 |   |   \_  libgcc-8.3.0-2.ppc [2: libgcc >= 8.3.0, libgcc_s.a(shr.o)]
 |   |   \_  libgcc6-6.3.0-1.ppc [1: libgcc_s.a(shr.o)]
 |   |   \_  libgcc7-7.2.0-1.ppc [1: libgcc_s.a(shr.o)]
 \_  python-argparse-1.2.1-1.noarch [1: python-argparse]
 \_  python-boto-2.34.0-1.noarch [1: python-boto >= 2.7]
 |   \_  python-2.7.18-1.ppc [2: /opt/freeware/bin/python, python >= 2.4]
 \_  python-cheetah-2.4.4-2.ppc [1: python-cheetah]
 |   \_  python-2.7.18-1.ppc [2: /opt/freeware/bin/python, python >= 2.4]
 \_  python-configobj-5.0.5-1.noarch [1: python-configobj]
 |   \_  python-2.7.18-1.ppc [1: python]
 \_  python-jsonpatch-1.8-1.noarch [1: python-jsonpatch]
 |   \_  python-2.7.18-1.ppc [1: python >= 2.4]
 |   \_  python-jsonpointer-1.0-1.noarch [1: python-jsonpointer]
 |   |   \_  python-2.7.18-1.ppc [1: python]
 \_  python-oauth-1.0.1-1.noarch [1: python-oauth]
 |   \_  python-2.7.18-1.ppc [1: python >= 2.4]
 \_  python-prettytable-0.7.2-1.noarch [1: python-prettytable]
 |   \_  python-2.7.18-1.ppc [1: python]
 \_  python-pyserial-2.7-1.ppc [1: python-pyserial]
 |   \_  python-2.7.18-1.ppc [2: /opt/freeware/bin/python_64, python >= 2.4]
 \_  python-requests-2.4.3-1.noarch [1: python-requests]
 \_  python-setuptools-0.9.8-2.noarch [1: python-setuptools]
 |   \_  python-2.7.18-1.ppc [1: python]
 \_  python-six-1.10.0-1.noarch [1: python-six]
 |   \_  python-2.7.18-1.ppc [1: python]
 \_  python-xml-0.8.4-1.ppc [1: python-xml]
 |   \_  python-2.7.18-1.ppc [2: /opt/freeware/bin/python, python >= 2.4]

```



##蛇足

createrepoの前提

```
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bash/bash-5.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//bzip2/bzip2-1.0.8-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//ca-certificates/ca-certificates-2019.01.10-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//createrepo/createrepo-0.10.3-3.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//curl/curl-7.67.0-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//cyrus-sasl/cyrus-sasl-2.1.26-3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//db/db-6.2.38-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//deltarpm/deltarpm-3.6-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//expat/expat-2.2.9-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gdbm/gdbm-1.18.1-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//gettext/gettext-0.19.8.1-5.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//glib2/glib2-2.56.1-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//texinfo/info-6.6-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//krb5/krb5-libs-1.16.1-4.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libffi/libffi-3.2.1-3.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libgcc-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libgcc6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libgcc7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libiconv/libiconv-1.16-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libssh2/libssh2-1.9.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc/libstdcplusplus-8.3.0-2.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc6/libstdcplusplus6-6.3.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc-7.2//gcc7/libstdcplusplus7-7.2.0-1.aix7.2.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libunistring/libunistring-0.9.9-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-devel-2.7.8-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-python-2.9.9-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//libxml2/libxml2-2.9.9-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//ncurses/ncurses-6.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nspr/nspr-4.21-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//nss/nss-3.13.2-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//openldap/openldap-2.4.48-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//p11-kit/p11-kit-tools-0.23.16-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//p11-kit/p11-kit-0.23.16-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//pkg-config/pkg-config-0.29.2-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/pysqlite-2.8.3-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//deltarpm/python-deltarpm-3.6-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-devel-2.7.10-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-iniparse-0.4-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-pycurl-7.43.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//python/python-urlgrabber-3.10.1-1.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//python/python-2.7.18-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//readline/readline-8.0-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//sqlite/sqlite-3.28.0-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-devel-5.2.5-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-libs-5.2.5-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//xz/xz-5.2.5-1.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//yum/yum-metadata-parser-1.1.4-2.aix6.1.ppc.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/noarch//yum/yum-3.4.3-7.aix6.1.noarch.rpm
wget https://anonymous:anonymous@public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc//zlib/zlib-1.2.11-1.aix6.1.ppc.rpm

```