非インターネット環境のAIXにdnfローカルレポジトリを作成

非インターネット環境のAIXにAIX Toolboxメディアを使用してdnfローカルレポジトリを作成するための手順です。

こちらを参考にしました。
[Creating local repo with DNF and AIX Toolbox Media Image](https://community.ibm.com/community/user/power/blogs/sangamesh-mallayya1/2022/02/09/creating-local-repo-with-dnf-and-aix-toolbox-media?CommunityKey=10c1d831-47ee-4d92-a138-b03f7896f7c9)


# メリット
セキュリティポリシー的にインターネットアクセスが許されない環境でも、オフラインでパッケージの導入や管理ができるようになります。
例えば、Power Systems Virtual Server上でデプロイしたAIX区画にパブリックI/Fを開けられない時、このローカルレポジトリを一度作成してしまえば、簡単にパッケージを導入できてちょっと楽ができます。

# AIX Toolboxとは
AIX Toolboxとは、AIX用に構築されたオープンソースおよびGNUソフトウェアをインストールするためのリソースとなります。AIXで一般的なパッケージマネージャーであるrpmを使用して、簡単に導入することができます。

:::note info
注意点として、こちらで導入したものはオープンソースソフトウェアのため、IBM Supportで問い合わせしてもサポートを受けることはできません。
:::
# 手順

### 環境
今回はAIX7.3での手順になります。
```
# oslevel -s
7300-01-00-0000
```

### 必要なもの
AIX Toolboxのメディア（今回はISOメディアを使用しています）


### 手順

1. AIX ToolboxのメディアをAIXにコピーしマウントする
    ```
    # ls
    ESD-AIX_Toolbox_for_Linux_Applications_Src_112023_LCD4113033.iso

    # loopmount -i  ESD-Toolbox_for_Linux_Apps_Common_7.1-7.3_112023_LCD4107738.iso -o "-V udfs -o ro" -m /mnt
    ```
    <br>
2. dnf_aixtoolbox_local.shを実行
    ```
    # /mnt/ezinstall/ppc/dnf_aixtoolbox_local.sh /mnt
    <以下、略>

    dnf installed successfully.
    Please run 'dnf update' to update packages to the latest level.

    Please note, RPM packages are downloaded in dnf cache /var/cache/dnf.
    RPM packages install files go under the path /opt.
    Hence it is recommended to always keep at least 512MB of free space in /var & /opt
    to avoid any download and installation/update failures.

    Creating the dnf.conf file with required locale repositories.
    The default /opt/freeware/etc/dnf/dnf.conf has been saved as /opt/freeware/etc/dnf/dnf.conf_local_bak

    ```
    スクリプトの実行が完了すると、以下のようにレポジトリが作成されています。
    
    ```
    # /opt/freeware/bin/dnf repolist
    repo id                                                                                    repo name
    Local_AIX_Toolbox                                                                          Local AIX generic repository
    Local_AIX_Toolbox_73                                                                       Local AIX 7.3 specific repository
    Local_AIX_Toolbox_noarch                                                                   Local AIX noarch repository
    ```
    <br>
3. dnf updateを実行して、パッケージを最新バージョンにします。
    ```
    # /opt/freeware/bin/dnf update
    .
    .
    .
    Upgraded:
      ca-certificates-2023.2.60-2.ppc   libcomps-0.1.15-101.ppc          libmodulemd-1.5.2-100.ppc           librepo-1.11.0-103.ppc              libsmartcols-2.34-101.ppc         libzstd-1.5.2-2.ppc
      p11-kit-0.24.1-1.ppc              p11-kit-tools-0.24.1-1.ppc       python3-3.9.18-1.ppc                python3-gpg-1.13.1-101.ppc          python3-libcomps-0.1.15-101.ppc   python3-librepo-1.11.0-103.ppc
      python3.9-3.9.18-1.ppc            python3.9-gpg-1.13.1-101.ppc     python3.9-libcomps-0.1.15-101.ppc   python3.9-librepo-1.11.0-103.ppc    zchunk-libs-1.1.4-103.ppc         dnf-4.2.17-64_53.ppc
      dnf-automatic-4.2.17-64_53.ppc    dnf-data-4.2.17-64_53.ppc        libdnf-0.39.1-64_52.ppc             libsolv-0.7.9-64_52.ppc             python3-dnf-4.2.17-64_53.ppc      python3-hawkey-0.39.1-64_52.ppc
      python3-libdnf-0.39.1-64_52.ppc   python3.9-dnf-4.2.17-64_53.ppc   python3.9-hawkey-0.39.1-64_52.ppc   python3.9-libdnf-0.39.1-64_52.ppc
    
    Installed:
      pinentry-1.0.0-1.ppc      bzip2-1.0.8-2.ppc        check-0.13.0-1.ppc         curl-8.4.0-1.ppc             cyrus-sasl-2.1.28-1.ppc     db-1:5.3.28-1.ppc       expat-2.5.0-1.ppc      gdbm-1.23-1.ppc
      gettext-0.21-2.ppc        glib2-2.76.3-1.ppc       gmp-6.2.1-1.ppc            gnupg2-2.2.35-1.ppc          gnutls-3.7.9-1.ppc          gpgme-1.13.1-101.ppc    info-7.0.2-1.ppc       json-c-0.15-2.ppc
      krb5-libs-1.20.1-1.ppc    libassuan-2.5.5-1.ppc    libffi-3.4.2-1.ppc         libgcrypt-1.10.2-1.ppc       libgpg-error-1.45-1.ppc     libiconv-1.17-1.ppc     libksba-1.6.3-1.ppc    libnghttp2-1.55.1-1.ppc
          libssh2-1.10.0-2.ppc      libtasn1-4.19.0-1.ppc    libtextstyle-0.21-2.ppc    libunistring-0.9.10-1.ppc    libxml2-2.10.4-1.ppc        libyaml-0.2.5-1.ppc     ncurses-6.4-1.ppc      nettle-3.7.3-1.ppc
      npth-1.5-1.ppc            openldap-2.5.16-1.ppc    pcre2-10.40-1.ppc          readline-8.2-1.ppc           sqlite-3.41.2-1.ppc         xz-libs-5.4.3-1.ppc     zlib-1.2.13-1.ppc      libgcc-1:10-2.ppc
      libgcc10-10.3.0-6.ppc     libgomp-1:10-2.ppc       libgomp10-10.3.0-6.ppc     libstdc++-1:10-2.ppc         libstdc++10-10.3.0-6.ppc

    Complete!
    ```
    

    これでローカルレポジトリの作成は完了です。
#### 試しにsambaを導入してみる
```
# /opt/freeware/bin/dnf install samba
Last metadata expiration check: 0:04:31 ago on Wed Dec  6 15:30:45 CST 2023.
Dependencies resolved.
====================================================================================================================================================================================================================
 Package                                                     Architecture                              Version                                        Repository                                               Size
====================================================================================================================================================================================================================
Installing:
 samba                                                       ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       2.0 M
Installing dependencies:
 coreutils                                                   ppc                                       9.3-1                                          Local_AIX_Toolbox                                       9.2 M
 libsmbclient                                                ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                        93 k
 popt                                                        ppc                                       1.19-1                                         Local_AIX_Toolbox                                       222 k
 samba-client                                                ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       502 k
 samba-common                                                ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       9.7 M
 samba-devel                                                 ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       269 k
 samba-libs                                                  ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       1.8 M
 samba-winbind                                               ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       524 k
 samba-winbind-clients                                       ppc                                       4.18.5-1                                       Local_AIX_Toolbox                                       131 k

Transaction Summary
====================================================================================================================================================================================================================
Install  10 Packages

Total size: 24 M
Installed size: 82 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
    Preparing        :                                                                                                                                                                                            1/1
    Installing       : popt-1.19-1.ppc                                                                                                                                                                           1/10
    Installing       : coreutils-9.3-1.ppc                                                                                                                                                                       2/10
    Running scriptlet: coreutils-9.3-1.ppc                                                                                                                                                                       2/10
    Installing       : libsmbclient-4.18.5-1.ppc                                                                                                                                                                 3/10
    Installing       : samba-client-4.18.5-1.ppc                                                                                                                                                                 4/10
    Installing       : samba-devel-4.18.5-1.ppc                                                                                                                                                                  5/10
    Installing       : samba-libs-4.18.5-1.ppc                                                                                                                                                                   6/10
    Running scriptlet: samba-winbind-4.18.5-1.ppc                                                                                                                                                                7/10
3004-686 Group "wbpriv" does not exist.
    
    Installing       : samba-winbind-4.18.5-1.ppc                                                                                                                                                                7/10
    Running scriptlet: samba-winbind-4.18.5-1.ppc                                                                                                                                                                7/10
    Installing       : samba-winbind-clients-4.18.5-1.ppc                                                                                                                                                        8/10
    Installing       : samba-common-4.18.5-1.ppc                                                                                                                                                                 9/10
    Installing       : samba-4.18.5-1.ppc                                                                                                                                                                       10/10
    Running scriptlet: samba-4.18.5-1.ppc                                                                                                                                                                       10/10
    
A guide to installing Samba on AIX can be found in /opt/freeware/doc/samba-4.18.5/README.AIX_Samba_Usage_Guide
    
    
    Verifying        : coreutils-9.3-1.ppc                                                                                                                                                                       1/10
    Verifying        : libsmbclient-4.18.5-1.ppc                                                                                                                                                                 2/10
    Verifying        : popt-1.19-1.ppc                                                                                                                                                                           3/10
    Verifying        : samba-4.18.5-1.ppc                                                                                                                                                                        4/10
    Verifying        : samba-client-4.18.5-1.ppc                                                                                                                                                                 5/10
    Verifying        : samba-common-4.18.5-1.ppc                                                                                                                                                                 6/10
    Verifying        : samba-devel-4.18.5-1.ppc                                                                                                                                                                  7/10
    Verifying        : samba-libs-4.18.5-1.ppc                                                                                                                                                                   8/10
    Verifying        : samba-winbind-4.18.5-1.ppc                                                                                                                                                                9/10
    Verifying        : samba-winbind-clients-4.18.5-1.ppc                                                                                                                                                       10/10
    
Installed:
    samba-4.18.5-1.ppc         coreutils-9.3-1.ppc                libsmbclient-4.18.5-1.ppc popt-1.19-1.ppc samba-client-4.18.5-1.ppc samba-common-4.18.5-1.ppc samba-devel-4.18.5-1.ppc samba-libs-4.18.5-1.ppc
    samba-winbind-4.18.5-1.ppc samba-winbind-clients-4.18.5-1.ppc
    
Complete!
```
ちゃんと、依存関係のあるパッケージも一緒にsambaが導入できました。