So-net無料ブログ作成

CentOS 7.3へのアップデート [CentOS]

CentOS 7.2 から CentOS 7.3 へのアップデート行った。
現在のところ、特に問題は発生していない。

また、今回のアップデートにより、下記の不具合が改善される。

1. X Window System で一部の画像が正しく表示されない。 (on CentOS 7.2)


(1) 発生事象


一部の画像に横方向の隙間が挿入され、不連続な表示となってしまう。
また、再描画で一時的に回復できても、すぐに再発する。

(補足)
GNOME (3.14) で頻繁に発生する。
・[アプリケーション] -> [ユーティリティ] -> [Tweak Tool]
・Firefox のロゴ
( cf. http://dan-project.blog.so-net.ne.jp/2016-02-09 )


(2) 対処方法


xorg-x11-server-Xorg-1.17.2-22 に更新する。 (on CentOS 7.3)


2. 備考


以前からの不具合や仕様の好みの問題で、下記パッケージはアップデートの対象外とした。
・gnome-terminal.x86_64
・kernel.x86_64
・stunnel.x86_64



Firefox ESR 45.4.0でのUnicodeの外国語の文字化け [CentOS]

1. 発生事象


Centos 6 上の Firefox ESR 45.4.0 において、下記の URL を表示すると Unicode で外国語が文字化けする。

https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%B0%E3%83%AB

(補足)
・Firefox ESR 38.8.0 では発生しない。
・Firefox ESR 45.3.0 でも発生する。


2. 対処方法


Fedora の下記のパッケージを追加する。

・unifont-fonts-7.0.06-1.fc22.noarch.rpm

(補足)
・もう少し新しいバージョンの unifont-font パッケージでもインストール可能である。
・Firefox において、使用するフォントに関する仕様が変更されたものと思われる。



CentOS 6.8へのアップデート後のshutdownでblkdeactivateがエラーを発生する件のその後 [CentOS]

1. 発生事象


shutdown 時に /sbin/blkdeactivate のエラーが発生する。
http://dan-project.blog.so-net.ne.jp/2016-07-05


2. 対処方法


下記のパッケージへの更新を行う。

device-mapper-1.02.117-7.el6_8.1.i686
device-mapper-event-1.02.117-7.el6_8.1.i686
device-mapper-event-libs-1.02.117-7.el6_8.1.i686
device-mapper-libs-1.02.117-7.el6_8.1.i686
lvm2-2.02.143-7.el6_8.1.i686
lvm2-libs-2.02.143-7.el6_8.1.i686



Web Pageへのアクセス時のPHPのエラーログへの対応 [CentOS]

久しぶりに CentOS 6 の Apache 上に構築した Web サイトの Web Page (PHP で作成) にアクセスしたところ、エラーログが出力されるようになってしまった。以前には発生していなかったため、原因の調査と対応を行った。
詳細は、以下の通りである。

[ソフトウェアのバージョン]
・httpd-2.2.15-54.el6.centos.i686
・php-pdo-5.3.3-48.el6_8.i686

1. エラーログの内容


下記の 2 種類に大別される。

(1) 未定義の配列要素の参照に関するもの

PHP Notice: Undefined index: xxx in yyy.php on line zzz, referer: http:...


・xxx: 連想配列のキー
・yyy: ソースファイルのパス(拡張子を除く)
・zzz: 当該箇所の行番号

(補足)
下記のような箇所で発生する。

$width = $_GET['width'];
$client = $_SERVER['HTTP_CLIENT_IP'];


(2) タイムゾーンの設定に関するもの

PHP Warning: xxx(): It is not safe to rely on the system's timezone
settings. You are *required* to use the date.timezone setting or the
date_default_timezone_set() function. ...

2. 対応


いずれも深刻なエラーではなく、notice または warning レベルの事象である。
よって、ソースの変更ではなく、これらの事象に関するログ出力を抑制することにする。

(1) エラーログ (1) への対応


/etc/php.ini の error_reporting の設定値を変更する。

(旧) error_reporting = E_ALL & ~E_DEPRECATED    ... (注1)
(新) error_reporting = E_ALL & ~E_NOTICE    ... (注2)


(注1) 運用時の推奨値(インストール直後の /etc/php.ini での設定値)
(注2) デフォルト値(未設定時に採用される値)

(補足)
ソースを変更する場合には、当該部分を下記のように変更する。

$width = isset($_GET['width']) ? $_GET['width'] : '';
$client = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : '';


(2) エラーログ (2) への対応


/etc/php.ini の date.timezone を設定する。

(旧) 未設定(インストール直後の /etc/php.ini での設定状況)
(新) date.timezone = Asia/Tokyo

3. 備考


PHP のバージョンアップに時に、デフォルト値の変更、または設定ファイルの更新漏れが発生したものと思われる。



TomcatのUnit設定ファイルの更新 [CentOS]

Tomcat の Unit 設定ファイルの更新を行った。
詳細は、以下の通りである。

1. 現在の Unit 設定ファイル


http://dan-project.blog.so-net.ne.jp/2016-08-16


2. 更新内容


・PID ファイルのパスの変更 (/var/run/tomcat/tomcat.pid への変更)
・Unit の説明の変更、コメントの追加


3. 実施手順


Tomcat を停止した状態で、以下の手順を実施する。

(1) systemd-tmpfiles の設定


下記の内容で /etc/tmpfiles.d/tomcat.conf を作成する。

d /var/run/tomcat 0755 tomcat tomcat -


(補足)
ブート時に当該ディレクトリが作成される。


(2) /var/run/tomcat の作成


リブート、または下記の手順を実施し、当該ディレクトリを作成する。

# cd /var/run
# mkdir tomcat
# chown tomcat.tomcat tomcat
# chmod 755 tomcat


(3) Unit 設定ファイルの更新

# diff tomcat.service tomcat.service.old 
1,5d0
< # Systemd unit file for Apache Tomcat (on CentOS 7)
< #
< # /var/run/tomcat is created by systemd-tmpfiles
< # (cf. /etc/tmpfiles.d/tomcat.conf)
< 
7c2
< Description=Apache Tomcat Web Application Container
---
> Description=Apache Tomcat
15c10
< Environment=CATALINA_PID=/var/run/tomcat/tomcat.pid
---
> Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid


TomcatのUnit設定ファイルの作成 [CentOS]

CentOS 7.2 上への Tomcat 8.0 の導入を行った(Tomcat は apache.org からダウンロード)。
その際、自動起動の設定で、Unit 設定ファイルの作成に少々手間取った。
以下は、備忘録としてまとめたものである。

[ソフトウェアのバージョン]
・systemd-219-19.el7_2.12.x86_64

1. Unit 設定ファイル (/etc/systemd/system/tomcat.service)
[Unit]
Description=Apache Tomcat
After=network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/java
Environment="JAVA_OPTS=-Duser.language=en -Duser.region=US \
-Dfile.encoding=ISO-8859-1"    … (注1)
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid
User=tomcat
Group=tomcat
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh

[Install]
WantedBy=multi-user.target


(注1) 実際には前の行と合わせて一行に設定


2. Unit 設定ファイルでの指定項目の説明


(1) 環境変数の定義 (Environment)


・Environment=name=value で、name に value を設定できる。
・EnvironmentFile に環境変数を定義したファイルのパスを指定することもできる。
・今回の方法では、環境変数の値に定義済の環境変数を含めることはできない。

(補足)
上記の Unit 設定ファイルでは、下記の環境変数を定義している。
・JAVA_HOME, JAVA_OPTS, CATALINA_HOME, CATALINA_PID


(2) 実行ユーザー/グループの指定 (User/Group)


User/Group に当該ユーザー/グループを指定する。


(3) 起動/停止コマンドの指定 (ExecStart/ExecStop)


環境変数を使用してパスを指定すると、絶対パスでないと認識され、エラーとなる。

(補足)
当該 Unit の再起動時には、下記の順にコマンドが実行される。
・停止コマンド
・起動コマンド


(4) 起動完了の判定方法の指定 (Type)


forking: 子プロセスを fork するコマンドである。
(デフォルト値: simple)


(5) 起動順序、依存関係の指定


(a) 起動順序の指定


After=xxx: 指定した Unit の起動後に起動する。


(b) 依存関係の指定


WantedBy=xxx: 指定した Unit が当該 Unit に依存する。
(指定した Unit の起動時に当該 Unit を起動する。)

(補足)
指定した Unit の [Unit] 欄での Wants 指定と同じ効果がある。


(6) PID ファイル


/var/run への書き込み権限がないため /usr/local/tomcat/temp に作成する。


3. 備考


該当するオンライン・マニュアルの所在は、下記の通りである。

・Unit 欄の設定項目: man systemd.unit
・Service 欄の設定項目: man systemd.service
・Install 欄の設定項目: man systemd.unit



CentOS 6.8の不具合への対応(3) [CentOS]

下記の CentOS 6.8 の不具合について、残件の対応を行った。

[不具合]
http://dan-project.blog.so-net.ne.jp/2016-05-27-1

[対応済]
http://dan-project.blog.so-net.ne.jp/2016-06-25
http://dan-project.blog.so-net.ne.jp/2016-07-02
http://dan-project.blog.so-net.ne.jp/2016-07-17-1

1. kernel-2.6.32-71.29.1.el6 で Kernel panic を発生する件


[ソフトウェアのバージョン]
kernel-2.6.32-71.29.1.el6.i686
libgudev1-147-2.73.el6.i686
libudev-147-2.73.el6.i686
udev-147-2.73.el6.i686


1-1. 発生事象


ブート時に Kernel panic を発生することがある。

・発生頻度は低い(感覚的には、20〜30 回に 1 回以下)。
・ivtv モジュールのために、kernel 2.6.32-71.29.1.el6.i686 を使用している。
・同じカーネルでも、CentOS 6.7 では発生しない。
・kernel 2.6.32-431.20.3.el6.i686 (ivtv を使用しない) では発生しない。


1-2. 対処方法


下記のパッケージを CentOS 6.7 のパッケージにバージョンダウンする。

(1) 該当する CentOS 6.8 のパッケージ

libgudev1-147-2.73.el6.i686
libudev-147-2.73.el6.i686
udev-147-2.73.el6.i686


(2) 使用した CentOS 6.7 のパッケージ

libgudev1-147-2.63.el6_7.1.i686
libudev-147-2.63.el6_7.1.i686
udev-147-2.63.el6_7.1.i686


(補足)
起動/再起動をそれなりの回数実施したが、当該事象は発生していない。



CentOS 6.x上のFirefoxが異常終了する件のその後 [CentOS]

[ソフトウェアのバージョン]
・Firefox 42.0 〜 Firefox ESR 45.2.0
 (mozilla.org からダウンロードしたものを使用。)

CentOS 6.x 上において、Firefox の異常終了が度々発生していた。
http://dan-project.blog.so-net.ne.jp/2016-04-25

また、どうにか動作が安定するようになったため、備忘録としてまとめてみた。
詳細は、以下の通りである。

1. 発生事象


CentOS 6.x 上において、Firefox が度々異常終了する。

(1) Firefox 上の Flash プレーヤーが度々クラッシュする。

(2) Firefox 上の HTML5 プレーヤーが度々クラッシュする。


特に、YouTube の動画再生でよく発生する。


(3) 上記以外でも、Firefox が度々異常終了する。

(補足)
Debian 7/8、CentOS 7 では発生しない。


2. 対象方法


下記のいずれかの手順を実施する。

(1) Firefox ESR 45.3.0 に更新する。


Firefox ESR 45.3.0 で改善されたようである。
(Firefox ESR 45.2.0 に比べ、明らかに動作が安定している。)


(2) Firefox ESR 38.8.0 を使用する。


少々バージョンは古いが、動作が安定している。
また、YouTube で Flash プレーヤーを使用するように設定することも可能である。

(補足)
・Firefox ESR 45.3.0 のリリース前は、このバージョンを主に使用していた。
・Firefox ESR 38.7.1 でも動作は安定していた。


(3) CentOS の RPM パッケージ (Firefox 45.0.2) を使用する。


短期間の使用であったが、動作は安定していた。

(補足)
マルチブートする Linux 間で Firefox を共有ため、最終的には採用しなかった。


3. 備考


(1) Firefox ESR のバージョン


Firefox ESR 45.3.0: Firefox 48.0 と同時にリリースされた Firefox ESR 版である。
Firefox ESR 38.8.0: Firefox 46.0 と同時にリリースされた Firefox ESR 版である。



CentOS 6.8でディスプレイをオープンできない件のその後 [CentOS]

1. 発生事象


CentOS 6.8 において、ノード名を付けて指定したディスプレイをオープンできない。


2. 対処方法


下記のパッケージへの更新を行う。

・xorg-x11-server-Xorg-1.17.4-9.5.el6.centos.i686
・xorg-x11-server-common-1.17.4-9.5.el6.centos.i686

(補足)
ほとんどの xorg-x11-drv-* は、依存パッケージとなっている。
依存関係のないパッケージは、下記の通りである。
・xorg-x11-drv-ati-firmware-7.6.1-2.el6.noarch
・xorg-x11-drv-geode-2.11.17-1.el6.i686
・xorg-x11-drv-neomagic-1.2.9-1.el6.i686


3. 備考


更新パッケージがリリースされる前の対処方法は、下記の通りである。
http://dan-project.blog.so-net.ne.jp/2016-06-25



snd-mixer-oss.koの所在 [CentOS]

CentOS 6 において、snd-mixer-oss モジュールを使用する必要があり、その所在を調べた。
(カーネルの再構成を行う場合を除く。)
詳細は、以下の通りである。

1. kernel 2.6.32-71.29.1.el6.i686 の場合


(1) カーネル・パッケージには含まれない。

(2) alsa-kmdl-2.6.32-71.29.1.el6.i686-1.0.23-85.el6.i686.rpm (ATrpms)


・kernel-2.6.32-71.29.1.el6.i686 のみを対象とする。

・/lib/modules/2.6.32-71.29.1.el6.i686/updates/sound/acore/oss/\
 snd-mixer-oss.ko


(3) kmod-alsa-1.0.23-1.el6.elrepo.i686.rpm


kernel-2.6.32-71.el6.i686 以降で使用可能である。


(補足)
2.6 系で、ivtv モジュールのロードでエラーが発生しないカーネルである。
これより後の 2.6 系バージョンでは、ivtv モジュールのロードでエラーが発生する。


2. kernel-2.6.32-431.20.3.el6.i686 の場合


(1) カーネル・パッケージに含れる。


(補足)
カーネル・パッケージに含まれるようになった最初のバージョンは不明である。
これ以降のバージョンでは、カーネル・パッケージに含まれる。