Red Hat Training

A Red Hat training course is available for RHEL 8

G.3.3. %post スクリプト

%post スクリプトは、インストールが完了した後、システムが最初に再起動する前に実行されるインストール後のスクリプトです。本セクションでは、システムのサブスクリプションなどのタスクを実行できます。

インストールが完了し、システムを最初に再起動する前に、システムで実行するコマンドを追加するオプションがあります。このセクションは、%post で始まり、%end で終了します。

%post セクションは、追加ソフトウェアのインストールや、追加のネームサーバーの設定といった機能に役に立ちます。インストール後のスクリプトは chroot 環境で実行するため、インストールメディアからスクリプトや RPM をコピーするなどの作業はデフォルトでは機能しません。この動作は、以下に記載されるように --nochroot オプションを使用することで変更できます。その後、%post スクリプトはインストール環境で実行し、インストール済みのターゲットシステムの chroot で実行することはありません。

インストール後のスクリプトは chroot 環境で実行されるため、ほとんどの systemctl コマンドはいかなるアクションも拒否します。詳細は、『 システム管理 の設定および管理』の「chroot 環境における systemctl の挙動」 参照してください。

%post セクションの実行中にも、インストールメディアが挿入される必要があることに注意してください。

G.3.3.1. %post スクリプトセクションオプション

以下のオプションを使用して、インストール後のスクリプトの動作を変更できます。オプションを使用するには、スクリプトの最初の部分で %post 行にオプションを追加してください。以下に例を示します。

%post --interpreter=/usr/libexec/platform-python
-- Python script omitted --
%end
--interpreter=

Python などの別のスクリプト言語を指定できます。以下に例を示します。

%post --interpreter=/usr/libexec/platform-python

システムで利用可能なスクリプト言語は、どれでも使用できます。ほとんどの場合は、/usr/bin/sh/usr/bin/bash、および /usr/libexec/platform-python になります。

platform-python インタープリターは、Python バージョン 3.6 を使用することに注意してください。新しいパスおよびバージョン用に、Python スクリプトを以前の RHEL バージョンから変更する必要があります。また、platform-python は、システムツールを対象としています。インストール環境外では python36 パッケージを使用してください。Red Hat Enterprise Linux 8 の Python の詳細は、『 基本的なシステム設定の構成』 の「Python の 概要 」を参照してください。

--nochroot

chroot 環境外で実行するコマンドを指定できます。

以下の例では、/etc/resolv.conf ファイルを、インストールしたばかりのファイルシステムにコピーします。

%post --nochroot
cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
%end
--erroronfail
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。
--log=

スクリプトの出力を、指定したログファイルに記録します。ログファイルのパスは、ユーザーが --nochroot オプションを使用しているかどうかを考慮に入れる必要があることに注意して下さい。--nochroot がない場合の例を示します。

%post --log=/root/ks-post.log

--nochroot を使用した場合は、以下のようになります。

%post --nochroot --log=/mnt/sysimage/root/ks-post.log