So-net無料ブログ作成

openSUSE 12.3 へのアップデート [openSUSE]

openSUSE 12.2 から openSUSE 12.3 へのアップデートを行った。
アップデート自体は、通常の live upgrade の手順で特に問題なく終了したが、アップデート後にいくつかの問題が発生したため、必要な対応を行った。
詳細は、以下の通りである。

1. Xorg のパーミションが原因で X Window System が起動できない。


(補足)
openSUSE 12.2 でも同様の事象が発生する。

(1) Xorg のパーミションの変更(setuid の設定)

# chmod 4755 /usr/bin/Xorg
# ls -l /usr/bin/Xorg
-rwsr-xr-x 1 root root 2222080 Jul 15 21:30 /usr/bin/Xorg

2. shutdown 時に /etc/init.d/halt.local が参照されない。


(1) /usr/lib/systemd/system/halt-local.service の編集

# diff halt-local.service halt-local.service.org
21,23d20
< 
< [Install]
< WantedBy=shutdown.target


(2) halt-local.service の有効化

# systemctl enable halt-local.service
(下記のシンボリックリンクが作成される。)
ln -s '/usr/lib/systemd/system/halt-local.service' \
'/etc/systemd/system/shutdown.target.wants/halt-local.service'

3. fvwm2 が異常終了する。


(補足)
下記の手順により、fvwm2 が異常終了する。
(openSUSE 12.2 でも同様の問題が発生する。)


(a) Firefox を起動する。
(b) google で JavaScript を検索する。
(c) 検索結果の一番目にある JavaScript - Wikipedia にアクセスする。
  ( http://ja.wikipedia.org/wiki/JavaScript )
(d) Firefox の [前ページに戻る] アイコンをクリックする。


(1) fvwm2 を openSUSE 12.1 のパッケージに入れ替える。

# rpm --oldpackage -Uvh fvwm2-2.5.26-59.1.3.i586.rpm

4. fvwm2 において、マウスクリックによるルートメニューの表示ができない。


(補足)
ルートウィンドウでのマウスクリックによるメニューの表示ができない。
(Debian GNU/Linux 7.1 でも同様の事象が発生する。)


(1) SCIM 関連のパッケージの入れ替え(openSUSE 12.2 のパッケージを使用)

[変更前のパッケージ]
mlterm-scim-3.1.6-2.1.2.i586
scim-1.4.14-3.2.1.i586
scim-anthy-1.2.7-20.1.1.i586
scim-bridge-0.4.16-140.1.1.i586
scim-bridge-gtk-0.4.16-140.1.1.i586
scim-m17n-0.2.2-249.1.1.i586

[変更後のパッケージ]
mlterm-scim-3.0.8-4.1.2.i586
scim-1.4.13-3.1.2.i586
scim-anthy-1.2.7-17.1.2.i586
scim-bridge-0.4.16-137.1.2.i586
scim-bridge-gtk-0.4.16-137.1.2.i586
scim-m17n-0.2.2-247.1.2.i586

5. lm_sensors.service の起動に失敗する。


(補足)
/var/log/warn に下記のメッセージが出力される。

systemd[1]: lm_sensors.service failed to run 'start' task: \
No such file or directory


(1) パッケージ(sensors-3.3.3-2.5.1.i586) の再インストール

# rpm -e sensors-3.3.3-2.5.1.i586
# zypper install sensors

6. GNOME (fallback モード)のパネルにミキサーが表示されない。


(1) ~/.pulse の再作成


(a) ~/.pulse を ~/.pulse.sav に mv する。

(b) GNOME を再起動する。

(c) ~/.pulse.sav を ~/.pulse に mv する。

  または、~/.pulse を再作成する。

(d) GNOME を再起動する。


7. getty のプロンプトがブートの途中で出力されてしまう。


(補足)
openSUSE 12.2 でも同様の事象が発生する。

(1) /etc/systemd/system/getty@.service の作成


cf. https://bbs.archlinux.org/viewtopic.php?id=147808

# cat /etc/systemd/system/getty@.service
.include /usr/lib/systemd/system/getty@.service

[Service]
ExecStartPre=-/bin/kill -55 1


xscreensaverのパスワード入力欄に何も表示されない [openSUSE]

1. 発生事象


openSUSE 12.2 の xscreensaver-5.15-2.2.2.i586 において、パスワードの入力時に入力欄に何も表示されず、入力が検知されたのかどうかが判断できない。


2. 原因


/usr/share/X11/app-defaults/XScreenSaver の設定によるものである。
( cf. https://bbs.archlinux.org/viewtopic.php?id=96573 )

*passwd.asterisks: False

3. 対処方法


~/.Xresources に下記の設定を追加する。

xscreensaver.*passwd.asterisks: True


GNOME 3のメニューに追加した項目を削除できないことがある [openSUSE]

1. 発生事象


GNOME 3 (強制フォールバックモードで使用) のメイン・メニューに追加した項目を削除できないことがある。

openSUSE 12.2 において、alacarte で下記の手順を実施した時に発生する。
必ず発生するというわけではない。
また、使用した alacarte のバージョンは、下記の通りである。

・alacarte-0.13.4-2.4.1.i586
・alacarte-lang-0.13.4-2.4.1.noarch

(1) alacarte の起動


[アプリケーション] -> [その他] -> [メイン・メニュー] を選択する。


(2) メイン・メニューへのメニュー項目の追加


メイン・メニューの [その他] に新しいメニュー(test) を追加する。
・メニュー欄の [その他] 内に [test] が表示される。
・メニュー欄の [その他] の選択時に、アイテム欄に [test] が表示されない。
・実際のメニューには、[test] は表示されない。


(3) 上記 (2) で追加したメニュー項目の削除


上記で作成した [test] を alacarte 上の操作で削除できない。


2. 対処方法


下記の設定ファイルを編集する。
バックアップが存在する場合には、バックアップしたものに置き換える。

(1) メニューの表示方法の設定


~/.config/menus/gnome-applications.menu

・<Menu> 〜 </Menu> の入れ子となっている。
・</Menu> の直前への <Deleted/> の追加により、該当する項目を無効化できる。


(2) メニュー項目の定義


~/.local/share/desktop-directories/alacarte-made.directory
および
~/.local/share/desktop-directories/alacarte-made-*.directory


(3) アイテム項目の定義


~/.local/share/applications/alacarte-made-*.desktop



Emacs 23.3.1のdiff-modeでのキーバインドの変更 [openSUSE]

Emacs において、M-g を goto-line にキーバインドしている。
(define-key esc-map "g" 'goto-line)

しかし、Emacs 23.3.1 の diff-mode では、M-g が revert-buffer にキーバインドされており、上記の設定が機能しない。(*.diff ファイルを読み込むと、diff モードとなる。)
これまでと同様に使用したいため、~/.emacs に下記の設定を追加した。
;; change key binding of diff mode
(when (not (string< emacs-version "23.3.1"))
  (add-hook 'diff-mode-hook
            '(lambda ()
               (define-key diff-mode-map "\eg" nil)
               (define-key diff-mode-map "\eG" 'revert-buffer))
            t))


/usr/bin/Xorgのファイル・パーミションの変更 [openSUSE]

openSUSE において、xorg-x11-server をアップデートする度に /usr/bin/Xorg の setuid ビットが削除され、手動で再設定することを繰り返してきた。しかし、手動での対応が面倒になってきたので、対応方法を変更した。
なお、基本的な手順は openSUSE のバージョンに依存しないと思われるが、実際に使用したのは openSUSE 12.2 である。

1. /etc/permissions.local の編集


下記の設定を追加する。

/usr/bin/Xorg                 root:root       4755

2. /etc/permissions.local の編集内容の反映


下記のコマンドを実行する。

# chkstat --system

3. 備考


/etc/permissions.local が参照されるためには、/etc/sysconfig/security の PERMISSION_SECURITY の設定値に "local" が含まれていることが必要である。
(詳細は、/etc/permissions のコメントを参照。)



不要なパッケージの検索 [openSUSE]

openSUSE は、CentOS や Debian に比べて、ディスク使用量が多い(インストールされるパッケージの数が多い)ように思われる。特に、Live アップグレードを実施するたびに、パッケージ数が膨大に増加してしまう。
これまでは、各パッケージの説明文から不要かどうかを判断し、不要なパッケージをアン・イストールするという手順を実施してきた。しかし、結構面倒な作業なので、何か手軽なツールがないかと探していたところ、rpmorphan というツールあることが分かった。

以下は、rpmorphan (on openSUSE 12.2) に関する記述である。

1. rpmorphan


rpmorphan はフリーのオープンソースユーティリティで、不要になった(orphaned) パッケージを検索するものである。
rpmorphan はシステムに導入されたパッケージから、他のパッケージと依存していないものを識別し、それをリストアップする。また、リストアップしたパッケージの詳細情報の表示、パッケージの削除を行うことも可能である。


2. パッケージのインストール
# zypper install rpmorphan
…
The following NEW packages are going to be installed:
  perl-Tk rpmorphan

The following recommended package was automatically selected:
  perl-Tk
…

3. 不要なパッケージの検索
# grpmorphan
または
# rpmorphan

4. 不要なパッケージの削除


削除するパッケージについて、grpmorphan の GUI からパッケージの削除を実施、または rpm によるパッケージのアン・インストールを実行する。


5. 備考


(1) 注意


検索結果として得られるのは不要なパッケージの候補であり、不要かどうかの判断は実行者の判断による。
また、パッケージ間に依存関係がない場合でも、あるパッケージの削除により、他のパッケージの動作に異常を発生することがある。
よって、アン・イストールしたパッケージを記録しておいた方が懸命である。
(例)
不要なパッケージのアン・イストールの前後で、パッケージの一覧を作成する。
(パッケージの一覧は、'rpm -qa | sort' の実行により得られる。)


(2) rpmorphan のアン・インストール


perl-Tk および rpmorphan をアン・インストールする。



agettyの"Hint: Num Lock off"を表示しないための設定 [openSUSE]

openSUSE 12.[1-2] の agetty では、NumLock が off の場合には "Hint: Num Lock off" というメッセージが出力される。
以下は、このメッセージを出力しないための設定方法に関するものである。

1. openSUSE 12.2 の場合


agetty の実行時に --nohints オプションを指定する。

例えば、下記のような設定を行う。

(1) /etc/systemd/system/getty@.service の作成

# /etc/systemd/system
# cp -p /lib/systemd/system/getty\@.service .


(2) /etc/systemd/system/getty@.service の編集

# diff getty\@.service /lib/systemd/system
20c20
< ExecStart=-/sbin/agetty --nohints %I 38400
---
> ExecStart=-/sbin/agetty %I 38400
41,45d40
< Alias=getty.target.wants/getty@tty2.service
< Alias=getty.target.wants/getty@tty3.service
< Alias=getty.target.wants/getty@tty4.service
< Alias=getty.target.wants/getty@tty5.service
< Alias=getty.target.wants/getty@tty6.service
---
> Alias=getty.target.wants/getty@tty1.service


(3) /etc/systemd/system/getty.target.wants/ の編集

# ln -s ../getty@.service getty@tty1.service
# ln -s ../getty@.service getty@tty2.service
# ln -s ../getty@.service getty@tty3.service
# ln -s ../getty@.service getty@tty4.service
# ln -s ../getty@.service getty@tty5.service
# ln -s ../getty@.service getty@tty6.service

2. openSUSE 12.1 の場合


openSUSE 12.1 の agetty には、--nohints オプションが存在しない。
よって、本質的な対応ではないが、NumLock を on にすることにより上記の出力を抑制する。

(1) /etc/init.d/boot.local に下記の設定を追加する。

# set NumLock
for tty in /dev/tty[1-6]*; do
    setleds -D +num < $tty
done
unset tty


GTK+の警告音の無効化 [openSUSE]

openSUSE 12.1 へのアップデート後、Firefox を二重起動しようとした時に、GTK+ の警告音が鳴るようになってしまった(openSUSE 12.2 でも同様である)。

下記のメッセージが表示される時に、警告音(ビープ音ではなく効果音)が鳴る。
Firefox は起動していますが応答しません。
新しいウィンドウを開くにはまず既存の Firefox プロセスを終了させるか、
コンピュータを再起動させなければなりません。

以降は、上記の警告音を無効化する手順をまとめたものである。

1. GNOME の場合


・パネルの音量調整のアイコンを右クリックし、[サウンドの設定] を選択する。
 (gnome-control-center sound が実行される。)

・[音響効果] タブを選択する。

・[警告音の音量] の [ミュート] を選択する。
 [ミュート] を選択しないと、音量が 0 でも上記の事象が発生する。


2. fvwm2 の場合


GTK+ の設定ファイルに下記の設定を追加する。

## disable to event sounds
gtk-enable-event-sounds = 0
gtk-enable-input-feedback-sounds = 0


・gtk-enable-event-sounds = 0 の追加のみでも無効化できる。

・GTK+2 の場合
 ~/.gtkrc-2.0 に上記の設定を追加する。

・GTK+3 の場合
 ~/.config/gtk-3.0/settings.ini に上記の設定を追加する。



openSUSE 12.2へのアップデート(2) [openSUSE]

1. 対応できていなかった不具合への対応


(1) ブート直後に getty のプロンプトが表示されない件への対応


【対処方法】
/etc/init.d/boot.local の最後に下記の設定を追加する。

# patch for getty@tty1.service (on openSUSE 12.2)
(sleep 3; systemctl restart getty@tty1.service >/dev/null 2>&1) &

[追記]


openSUSE 12.2へのアップデート [openSUSE]

openSUSE 12.1 から 12.2 へのアップデートを行った。
正確には、openSUSE 12.1 の環境を複製し、複製したものを 12.2 にアップデートした。

アップデート自体は、これまで使用してきた live upgrade の手順で、特に問題なく終了した。
しかし、openSUSE 12.1 の設定では正常に動作しないものがあり、いくつか設定を変更した。
openSUSE 11.4 から 12.1 へのアップデートの場合よりも多くの変更が必要となった。
詳細は、以下の通りである。

1. ブート直後に getty のプロンプトが表示されない。


【ソフトウェアのバージョン】
systemd-44-10.1.1.i586

【発生事象の補足情報】
Enter キーを押下しなければ、プロンプトが表示されない。
openSUSE 12.1 でも同様の事象が発生したが、この時行った対応方法では改善されなかった。
(openSUSE 12.1 では、/etc/init.d/boot.local の最後に sleep 5 を追加することで対応。)


2. ブート直後に md が 異常な状態となることがある。


【ソフトウェアのバージョン】
・mdadm-3.2.5-3.7.1.i586
・systemd-44-10.1.1.i586

【対処方法】
openSUSE 12.1 でも発生した事象であり、同様の対応方法で改善された。
(openSUSE 12.1 では、mdadm を openSUSE 11.4 のパッケージに入れ替えることで対応。)


3. Xorg の起動後にマウスが動作しない。


【ソフトウェアのバージョン】
xorg-x11-server-7.6_1.12.3-1.2.3.i586

【発生事象の補足情報】
X の設定は、以前のパージョンで自動生成されたものを更新して使用している。
また、openSUSE 12.1 で正常に動作していたものである。

【対処方法】
/etc/X11/xorg.conf の下記の設定を削除(またはコメント化)する。

Section "InputDevice"
  ...
  Option    "Name" "ImExPS/2 Generic Explorer Mouse"  <--- この部分
  ...
EndSection

4. Xorg が異常終了することがある。


【ソフトウェアのバージョン】
xorg-x11-7.6_1-3.2.1.noarch

【発生事象の補足情報】
Firefox での Web ブラウジング中に X が突然終了してしまうことが数度発生した。
現時点では、原因、および対象方法は不明である。


5. 他のノードからの ftp ができない。


【ソフトウェアのバージョン】
・vsftpd-3.0.0-3.1.3.i586
・xinetd-2.3.14-160.1.3.i586

【発生事象の補足情報】

% ftp beta
Connected to beta (192.168.0.12).
500 OOPS: could not bind listening IPv4 socket
ftp> quit


【対処方法】
/etc/vsftpd.conf に下記の設定を追加する。

listen=NO


man vspftd.conf では、デフォルト値は NO と表示されるが、デフォルト値が YES のような挙動である。


6. 他のノードからの rcp ができない


【ソフトウェアのバージョン】
・rsh-server-0.17-722.1.2.i586
・xinetd-2.3.14-160.1.3.i586
・systemd-44-10.1.1.i586

【発生事象の補足情報】

% rcp -p A.log beta:/tmp
rcp: lost connection


rsh は問題なく動作する。

【対処方法】
/etc/pam.d/common-session-pc の 編集

(変更前) session  optional  pam_systemd.so
(変更後) #session  optional  pam_systemd.so


【補足】
/etc/pam.d/common-session の pam_systemd.so により、セッションを終了させられる。

・/etc/pam.d/rsh で common-session を参照するように設定されている。
・common-session は、common-session-pc へのシンボリックリンクである。
・/lib/security/pam_systemd.so は、systemd パッケージで提供される。


7. ログイン成功時に Last login 情報が 2 個表示される。


【発生事象の補足情報】

% rsh beta
Last login: Sun Sep  9 19:47:07 JST 2012 on tty1         ... (a)
No mail.
Last login: Sun Sep  9 19:54:04 from beta.private.net    ... (b)


【対処方法】
・/etc/pam.d/login の pam_lastlog.so の使用を止める(コメント化する)。
・/etc/pam.d/remote の pam_lastlog.so の使用を止める(コメント化する)。


8. 備考


当方の環境では、openSUSE 12.1 の方が動作が安定している。
よって、当面 openSUSE 12.2 は使用せず、情報の収集を行おうと考えている。


[追記]