21.3.3. %post スクリプト
%post スクリプトは、インストールが完了した後、システムが最初に再起動する前に実行されるインストール後のスクリプトです。このセクションでは、システムのサブスクリプションなどのタスクを実行できます。
インストールが完了し、システムを最初に再起動する前に、システムで実行するコマンドを追加するオプションがあります。このセクションは、%post で始まり、%end で終了します。
%post セクションは、追加ソフトウェアのインストールや、追加のネームサーバーの設定といった機能に役に立ちます。インストール後のスクリプトは chroot 環境で実行するため、インストールメディアからスクリプトや RPM をコピーするなどの作業はデフォルトでは機能しません。この動作は、以下で説明されているように --nochroot オプションを使用して変更できます。その後、%post スクリプトはインストール環境で実行し、インストール済みのターゲットシステムの chroot で実行することはありません。
インストール後のスクリプトは chroot 環境で実行されるため、ほとんどの systemctl コマンドはいかなるアクションも拒否します。
%post セクションの実行中は、インストールメディアを挿入したままにする必要があります。
21.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 における Python の詳細は、Introduction の概要 を参照してください。--nochrootchroot 環境外で実行するコマンドを指定できます。
以下の例では、/etc/resolv.conf ファイルを、インストールしたばかりのファイルシステムにコピーします。
%post --nochroot cp /etc/resolv.conf /mnt/sysroot/etc/resolv.conf %end--erroronfail-
スクリプトが失敗するとエラーを表示し、インストールを停止します。エラーメッセージは、失敗の原因がログ記録されている場所を示します。インストールされたシステムは、不安定で起動できない状態になる可能性があります。
inst.nokillオプションを使用して、スクリプトをデバッグできます。 --log=スクリプトの出力を、指定したログファイルに記録します。ログファイルのパスを指定する際には、
--nochrootオプションを使用するかどうかを考慮する必要があります。--nochrootがない場合の例を示します。%post --log=/root/ks-post.log--nochrootを使用した場合は、以下のようになります。%post --nochroot --log=/mnt/sysroot/root/ks-post.log