CentOSでrpmパッケージ更新後の適用

CentOSでyumコマンドやrpmコマンドでパッケージを更新した後の更新内容の適用に関してです。

下記のようにパッケージの種類によっては更新後に別途手動で再起動する必要があります。

1)アプリケーション


 
 ユーザースペースのアプリケーションが更新された場合は、システムにあるアプリケーションのすべてのインスタンスが停止し、プログラムが再起動され、更新バージョンが使用されるようになります。
 

2)カーネル


 
 カーネルが更新された場合は、更新バージョンはシステムの再起動後にはじめて使用できるようになります。
 

3)共有ライブラリ


 
・通常、共有ライブラリを使用しているアプリケーションは、アプリケーションが初期化されるときに共有コードを読み込みます。
 
そのため共有ライブラリを更新した場合は、更新されたライブラリを使用しているすべてのアプリケーションは再起動する必要があります。
 
・特定のライブラリにリンクしている実行中のアプリケーションを判別するには、以下コマンドを実行します。
 
lsof 共有ライブラリのパス
 
例)ホストのアクセス制御にTCP Wrapperを使用する実行中のプログラムの一覧

# lsof /lib64/libwrap.so*
COMMAND  PID   USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME
sshd    1154   root mem    REG  253,0    40792 261321 /lib64/libwrap.so.0.7.6
sshd    1173   user mem    REG  253,0    40792 261321 /lib64/libwrap.so.0.7.6
sshd    9488   root mem    REG  253,0    40792 261321 /lib64/libwrap.so.0.7.6

 

4)SysVサービス


 
 SysVサービスはブート中に起動される永続的なサーバープログラムで、sshd、vsftpd、xinetdなどがあります。
 
通常、これらのプログラムはマシンが稼働している間はメモリ内に残るので、パッケージのアップグレード後にはそれぞれのサービスを下記コマンドなどで再起動する必要があります。
 
/sbin/service restart
 

5)xinetdサービスによって管理されるサービス


 
Telnet、IMAP、POP3などのxinetdサービスによって管理されているサービスは、アクティブな接続があるときにのみ実行されます。
 
これらのサービスの新規インスタンスは、新しい要求が受信されるたびにxinetdが起動されるので、アップグレード後に発生する接続は更新ソフトウェアによって処理されます。
 
ただし、xinetdが制御するサービスのアップグレード時にアクティブな接続がある場合、それらは古いバージョンのソフトウェアによって処理されるので注意します。
 
xinetdが制御する特定サービスの古いインスタンスを停止するには、そのサービスのパッケージをアップグレードしてから、現在実行中のすべてのプロセスを停止します。
 
プロセスが実行中であるかどうかを判別するにはps、pgrepコマンドなどを使用し、kill、killallコマンドなどを使用してサービスの現在のインスタンスを停止します。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です