SSブログ

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 は使用せず、情報の収集を行おうと考えている。


[追記]


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。