はじめに
AIX でファイルセット更新、アップデートの際に構成ファイルの保管を AIX の機能で行う方法を確認しました。
geninstall コマンドが実行されるアップデート(ファイルセット更新)が行われる場合、
/etc/check_config.files に記載された対象ディレクトリ、ファイルの保存、削除が可能であることを利用しています。
環境
- OS : AIX 7.3 TL2 SP2
# oslevel -s
7300-02-02-2420
- 検証モジュール:OpenSSH 8.1.112.2000
# lslpp -l | grep openssh
openssh.base.client 8.1.112.2000 COMMITTED Open Secure Shell Commands
openssh.base.server 8.1.112.2000 COMMITTED Open Secure Shell Server
openssh.man.en_US 8.1.112.2000 COMMITTED Open Secure Shell
/etc/check_config.files 設定
/etc/check_config.files ファイルのデフォルトの状態は以下の内容です。
# cat /etc/check_config.files
# @(#)78 1.2 src/bos/etc/check_config.files/check_config.files, cmdinstl, bos730, initial_extract 3/21/06 15:19:34
# IBM_PROLOG_BEGIN_TAG
# This is an automatically generated prolog.
#
# bos730 src/bos/etc/check_config.files/check_config.files 1.2
#
# Licensed Materials - Property of IBM
#
# Restricted Materials of IBM
#
# COPYRIGHT International Business Machines Corp. 2004,2006
# All Rights Reserved
#
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
#
# IBM_PROLOG_END_TAG
# Watched File List:
# "d" = delete old file when finished
# "s" = save old file to /var/adm/config
# This file may be edited
#---------------------------------------
d /etc/check_config.files
d /etc/csh.cshrc
d /etc/csh.login
d /etc/diskpartitions
d /etc/environment
d /etc/filesystems
d /etc/group
d /etc/inittab
d /etc/motd
d /etc/passwd
d /etc/profile
d /etc/rc
d /etc/services
d /etc/shells
d /etc/swapspaces
d /etc/vfs
d /sbin/rc.boot
#
以下の設定に変更しました。/work/test1111/test1, /work/test1111/test2 ファイルを保存する指定です。
# cat /etc/check_config.files
#---------------------------------------
s /work/test111/test1
s /work/test111/test2
#
保管先となる /var/adm/config はファイルシステム容量に注意が必要ですね。
# df -m /var
Filesystem MB blocks Free %Used Iused %Iused Mounted on
/dev/hd9var 1024.00 977.14 5% 926 1% /var
#
977 MB 程度余裕があります。
対象ディレクトリ、ファイル実在の確認
# ls -l /work/test111/
total 0
-rw-r--r-- 1 root system 0 Nov 27 08:20 test1
-rw-r--r-- 1 root system 0 Nov 27 08:20 test2
# cksum /work/test111/test1
4294967295 0 /work/test111/test1
# cksum /work/test111/test2
4294967295 0 /work/test111/test2
/work/test1111/test1,/work/test1111/test2 は存在しています。
geninstall コマンドを使用するファイルセット更新の実行
検証用アップデート・モジュールは、OpenSSH 9.2.112.2000 です。
# ls -l
total 34920
-rw-r--r-- 1 root system 17876893 Nov 18 20:25 OpenSSH_9.2.112.2000.tar.Z
解凍
# zcat OpenSSH_9.2.112.2000.tar.Z | tar xf -
# ls -l
total 34928
drwxr-xr-x 2 root system 4096 Jun 26 2023 OpenSSH_9.2.112.2000
-rw-r--r-- 1 root system 17876893 Nov 18 20:25 OpenSSH_9.2.112.2000.tar.Z
解凍された内容を確認します。
# cd OpenSSH_9.2.112.2000
# ls
openssh.base openssh.msg.FR_FR openssh.msg.RU_RU openssh.msg.de_DE openssh.msg.pl_PL
openssh.license openssh.msg.HU_HU openssh.msg.SK_SK openssh.msg.en_US openssh.msg.pt_BR
openssh.man.en_US openssh.msg.IT_IT openssh.msg.ZH_CN openssh.msg.es_ES openssh.msg.ru_RU
openssh.msg.CA_ES openssh.msg.JA_JP openssh.msg.ZH_TW openssh.msg.fr_FR openssh.msg.sk_SK
openssh.msg.CS_CZ openssh.msg.Ja_JP openssh.msg.Zh_CN openssh.msg.hu_HU openssh.msg.zh_CN
openssh.msg.DE_DE openssh.msg.KO_KR openssh.msg.Zh_TW openssh.msg.it_IT openssh.msg.zh_TW
openssh.msg.EN_US openssh.msg.PL_PL openssh.msg.ca_ES openssh.msg.ja_JP
openssh.msg.ES_ES openssh.msg.PT_BR openssh.msg.cs_CZ openssh.msg.ko_KR
smit でアップデートを実行します。
ソフトウェア・ディレクトリにはカレント・ディレクトリ(.) を指定
# smitty update_all
----------------------------------------------------------------
Update Installed Software to Latest Level (Update All)
Type or select a value for the entry field.
Press Enter AFTER making all desired changes.
[Entry Fields]
* INPUT device / directory for software [.] +
ACCEPT new license agreements? を yes にして実行します。
Update Installed Software to Latest Level (Update All)
Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
* INPUT device / directory for software .
* SOFTWARE to update _update_all
PREVIEW only? (update operation will NOT occur) no +
COMMIT software updates? yes +
SAVE replaced files? no +
AUTOMATICALLY install requisite software? yes +
EXTEND file systems if space needed? yes +
VERIFY install and check file sizes? no +
DETAILED output? no +
Process multiple volumes? yes +
ACCEPT new license agreements? yes +
PREVIEW new LICENSE agreements? no +
WPAR Management
実行後、成功の結果で返ってきています。
COMMAND STATUS
Command: OK stdout: yes stderr: no
Before command completion, additional instructions may appear below.
[TOP]
geninstall -I "a -cgNqwXY -J" -Z -d . -f File 2>&1
File:
openssh.base.client 9.2.112.2000
openssh.base.server 9.2.112.2000
openssh.man.en_US 9.2.112.2000
+-----------------------------------------------------------------------------+
Pre-installation Verification...
+-----------------------------------------------------------------------------+
Verifying selections...done
Verifying requisites...done
[MORE...167]
~ 省略 ~
Finished processing all filesets. (Total time: 11 secs).
+-----------------------------------------------------------------------------+
Summaries:
+-----------------------------------------------------------------------------+
Installation Summary
--------------------
Name Level Part Event Result
-------------------------------------------------------------------------------
openssh.base.server 9.2.112.2000 USR APPLY SUCCESS
openssh.base.client 9.2.112.2000 USR APPLY SUCCESS
openssh.base.server 9.2.112.2000 ROOT APPLY SUCCESS
openssh.base.client 9.2.112.2000 ROOT APPLY SUCCESS
openssh.man.en_US 9.2.112.2000 USR APPLY SUCCESS
---- end ----
ファイルセット・レベル確認
# lslpp -l | grep openssh
openssh.base.client 9.2.112.2000 COMMITTED Open Secure Shell Commands
openssh.base.server 9.2.112.2000 COMMITTED Open Secure Shell Server
openssh.man.en_US 9.2.112.2000 COMMITTED Open Secure Shell
OpenSSH を変更したため、sshd の停止起動を行なっておきます。
# stopsrc -s sshd
0513-044 The sshd Subsystem was requested to stop.
# startsrc -s sshd
0513-059 The sshd Subsystem has been started. Subsystem PID is 4325742.
結果
/var/adm/config 下に対象のファイルが保存されたかどうかを確認します。
# ls -l /var/adm/config
total 8
drwxrwxr-x 2 root system 4096 Sep 03 20:59 etc
drwxrwxr-x 2 root system 256 Sep 03 20:59 sbin
drwxr-xr-x 3 root system 256 Nov 27 08:26 work
# ls -l /var/adm/config/work/
total 0
drwxr-xr-x 2 root system 256 Nov 27 08:26 test111
# ls -l /var/adm/config/work/test111
total 0
-rw-r--r-- 1 root system 0 Nov 27 08:20 test1
-rw-r--r-- 1 root system 0 Nov 27 08:20 test2
# cksum /var/adm/config/work/test111/test1
4294967295 0 /var/adm/config/work/test111/test1
# /var/adm/config/work/test111/test2
ksh: /var/adm/config/work/test111/test2: cannot execute
# cksum /var/adm/config/work/test111/test2
4294967295 0 /var/adm/config/work/test111/test2
#
/var/adm/config/下に work ディレクトリが追加されて、対象ファイルが保管されていることが確認できました。
元の /work ディレクトリ下にもファイルは残ったままです。
# ls -l /work/test111
total 0
-rw-r--r-- 1 root system 0 Nov 27 08:20 test1
-rw-r--r-- 1 root system 0 Nov 27 08:20 test2
#
# cksum /work/test111/test1
4294967295 0 /work/test111/test1
# cksum /work/test111/test2
4294967295 0 /work/test111/test2
#
/var/adm/ras/config.diffの確認
geninstall での更新で変更された内容は /var/adm/ras/config.diff ファイルに書かれます。
ただし今回保存対象としたファイルは、ファイルセット更新で変更されるファイルではないため、config.diff ファイルは作成されていません。
# ls -l /var/adm/ras/config.diff*
-rw-r--r-- 1 root system 1508 May 02 2023 /var/adm/ras/config.diff.11403656
-rw-r--r-- 1 root system 603 Nov 21 2021 /var/adm/ras/config.diff.16711998
-rw-r--r-- 1 root system 4488 Sep 03 20:50 /var/adm/ras/config.diff.9044248
#
上記は全て以前のアップデートで作成されています。
おわりに
ファイルセット更新、AIX アップデートの際にシステム構成ファイルなど保管しておきたい際などのユースケースで使用できます。
検証用ファイルが0バイトであったため、検証用に何か書き込みをしておいた方が良かったと検証後に気づきました..。ただ、指定ファイルが保存はされるという動きは確認できました。
以上です。