SSブログ

Debian 9.0へのアップグレード後の不具合対応 [Debian]

Debian 9.0 へのアップグレード後に発生した不具合の残件対応を行った。
詳細は、以下の通りである。

・発生した不具合の一覧
 cf. http://dan-project.blog.so-net.ne.jp/2017-06-25

1. 発生事象


X アプリでノード名を付けて指定したディスプレイを開けない。

(例)
% xterm -display localhost:0
xterm: Xt error: Can't open display: localhost:0


・パッケージのバージョン
 xserver-xorg 1:7.7+19
 xserver-xorg-core 2:1.19.2-1
 xinit 1.3.4-3+b1


2. 対処方法


/usr/bin/Xorg を変更し、起動時のオプションに '--listen tcp' を追加する。

# cd /usr/bin
# diff Xorg Xorg.org
8c8
<       exec "$basedir"/Xorg.wrap -listen tcp "$@"
---
>       exec "$basedir"/Xorg.wrap "$@"
10c10
<       exec "$basedir"/Xorg -listen tcp "$@"
---
>       exec "$basedir"/Xorg "$@"

3. 備考


(1) /usr/bin/Xorg の変更により、6000 番ポートが Listen 状態になる。

% netstat -an | grep 6000
tcp        0      0 0.0.0.0:6000            0.0.0.0:*           LISTEN
tcp6       0      0 :::6000                 :::*                LISTEN


(2) /etc/X11/xinit/xserverrc の変更では効果がない。

# cd /etc/X11/xinit
# diff xserverrc xserverrc.org
3c3
< exec /usr/bin/X "$@"
---
> exec /usr/bin/X -nolisten tcp "$@"


Debian 9.0へのアップグレード時に発生した不具合への対応 [Debian]

Debian 9 のテスト環境作成のため、Debian 8.8 から Debian 9.0 へのアップグレードを行った。
以下は、その際に発生した事象とその対応をまとめたものである。

1. アップグレードの手順


これまでのバージョンでの実施手順と同様である。
cf. https://www.debian.org/releases/stretch/i386/release-notes/ch-upgrading.ja.html


2. 発生事象 (対応済)


(1) アップグレード後に LVM が認識されない


・ブート時に LVM が認識されない。
・マウントに失敗し、システムが正常に起動できない。
・emergency mode になる。


(a) 対処方法


下記の手順を実施し、initramfs image を更新する。

・emergency mode で、root のパスワードを入力
・lvscan を実行
・マウントに必要な VG に対して、'vgchange -ay ' を実行
・exit を実行(emergency mode の終了)
・/boot/initrd.img-* の更新
 (update-initramfs -c|-u -k `uname -r`)
・システムの再起動


(2) コンソールで、日本語キーボードとして認識されない


・/etc/default/keyboard は Debian 8 からの流用である。
・'localectl set-keymap jp106' の実行では改善されない。
・X 環境では日本語キーボードと認識される。


(a) 対処方法


/etc/rc.local に下記の設定を追加する。

loadkeys jp106


(3) 一般ユーザーで X を 起動できない。


・パッケージのバージョン: xserver-xorg 1:7.7+19
・/var/log/Xorg.0.log が作成されない。
 (~/.local/share/xorg/Xorg.0.log が作成される。)
・ログファイルのエラーメッセージは、下記の通りである。

Fatal server error:
(EE) parse_vt_settings: Cannot open /dev/tty0 (Permission denied)


(a) 対処方法


/etc/X11/Xwrapper.config を変更する。

# diff Xwrapper.config Xwrapper.config.org
14,15c14
< allowed_users=anybody
< needs_root_rights=yes
---
> allowed_users=console


・上記の対応後、/var/log/Xorg.0.log が作成されるようになる。


(4) mplayer で ~/.mplayer/{config,input.conf} の設定が反映されない。


(a) 原因


mplayer から mpv に変更されたためである。
・mplayer は mpv へのシンボリックリンクとなっている。
・mplayer と mpv では、設定ファイルのパスが異なる。


(b) 対処方法


下記のパスに設定ファイルを作成する。

~/.mpv/{config,input.conf}
または
~/.config/mpv/{mpv.conf,input.conf}


(c) 設定ファイルへの設定例

% cat ~/.mpv/config
# display size and aspect ratio
video-aspect=16:9
geometry=320

% cat ~/.mpv/input.conf
# key bindings
MOUSE_BTN3 volume 1
MOUSE_BTN4 volume -1


(5) gnome-session が想定通りの動作とならない。


・パッケージのバージョン: gnome-session-flashback 3.22.0-3
・'exec gnome-session --session=gnome-flashback' で起動できない。


(a) 対処方法


gnome-session の起動部分を下記のように変更する。
( cf. https://wiki.archlinuxjp.org/index.php/GNOME_Flashback )

(変更前)
exec gnome-session --session=gnome-flashback

(変更後)
export XDG_CURRENT_DESKTOP=GNOME-Flashback:GNOME
exec gnome-session --session=gnome-flashback-metacity


(b) gnome-session のバージョンの確認方法


・gnome-session --version: 出力なし
・/usr/lib/gnome-session/gnome-session-binary --version: 出力なし
・gnome-session-inhibit --version: バージョンを表示


3. 発生事象 (未対応)


(1) X アプリでノード名を付けて指定したディスプレイを開けない。


・パッケージのバージョン: xserver-xorg 1:7.7+19
・'Xt error: Can't open display' と出力される。
・'xhost +' を実行しても状況は変わらない。
・xauth を無効化しても状況は変わらない。
・':0' で指定した場合には開ける。

(例)
% xterm -display localhost:0
xterm: Xt error: Can't open display: localhost:0


bashでの配列の使用 [Linux]

Perl スクリプトをシェルスクリプト(bash on Linux) に移植する必要があり、対応を行った。
この過程で、スクリプトの可読性を良くするために配列(連想配列を含む)を使用した。

以下は、備忘録として、配列の使用に関して要点をまとめたものである。

1. 配列 (indexed array)


(1) 変数の宣言


通常の変数の場合と同じである。
・通常は変数の宣言は不要である。
・local により、関数内のローカル変数として宣言することが可能である。


(2) 値の設定


(a) 要素毎の設定

a_demo[0]=a
a_demo[1]=b


(b) 全要素の設定

a_demo=(a b)


(補足)
・空の配列の作成: a_demo=()
・配列の宣言と要素の設定を同時にすることが可能である。
 local a_demo=(a b)


(c) 配列要素の追加

a_demo+=(c)


(3) 値の参照

${#a_demo[*]} ... 要素数
${a_demo[*]} ... 全要素
${a_demo[n]} ... n 個目の要素


(補足)
* の代わりに @ を使用することも可能である。
両者の違いは、通常の変数参照時の "$*" と "$@" の違いと同様である。


2. 連想配列 (associative array、hash)


bash v4 で追加された機能である。
未対応のバージョンでは、エラーとなる。

(1) 変数の宣言


使用する前に、連想配列としての変数の宣言が必要である。

declare -A h_demo


(補足)
関数内で上記の変数宣言を行った場合には、当該関数内でのみ有効となる。
(関数内でのローカル変数となる。)


(2) 値の設定


(a) 要素毎の設定

h_demo[Jan]=1
h_demo[Feb]=2


(b) 全要素の設定

h_demo=([Jan]=1 [Feb]=2)


(補足)
・空の連想配列の作成: h_demo=()
・連想配列の宣言と要素の設定を同時にすることが可能である。
 declare -A h_demo=([Jan]=1 [Feb]=2)


(3) 値の参照

${#h_demo[*]} ... 要素数
${!h_demo[*]} ... 全要素(key)
${h_demo[*]} ... 全要素(value)
${h_demo[key]} ... 特定の要素(key に対応する value)


(補足)
* の代わりに @ を使用することも可能である。
両者の違いは、通常の変数参照時の "$*" と "$@" の違いと同様である。



xawtvのウィンドウサイズを変更すると画像が表示されなくなる [Debian]

[ソフトウェアのバージョン]
xawtv 3.103-3+b1
linux-image-3.16.0-4-686-pae 3.16.39-1+deb8u2

1. 発生事象


Debian 8 において、xawtv のウィンドウサイズを変更すると画像が表示されなくなる。

・xawtv を再起動すると回復する。
・Debian 7 (linux-image-3.2.0-4-686-pae 3.2.86-1)では発生しない。
・xawtv 3.102-3 (Debian 7 のパッケージ)に変更しても状況は変わらない。


2. 原因


kernel 3.16.x 上で発生する xawtv のバグである。
(詳細は、備考を参照。)


3. 対処方法


下記の手順を実施する。

(1) 更新するパッケージの入手


ubuntu 16.10 の下記のパッケージをダウンロードする。

fontconfig-config_2.11.94-0ubuntu2_all.deb
libfontconfig1_2.11.94-0ubuntu2_i386.deb
pia_3.103-4_i386.deb
scantv_3.103-4_i386.deb
xawtv-plugins_3.103-4_i386.deb
xawtv_3.103-4_i386.deb


(補足)
・Debian 8 用の更新パッケージはリリースされていない。
・Debian sid よりも ubuntu 16.10 の方が更新するパッケージの数が少ない。
https://pkgs.org/ 等から当該パッケージをダウンロードする。


(2) パッケージの更新

# dpkg -i *.deb


(補足)
更新内容は、下記の通りである。

・fontconfig-config
 2.11.0-6.3+deb8u1 => 2.11.94-0ubuntu2
・libfontconfig1
 2.11.0-6.3+deb8u1 => 2.11.94-0ubuntu2
・pia
 3.103-3+b1 => 3.103-4
・scantv
 3.103-3+b1 => 3.103-4
・xawtv-plugins
 3.103-3+b1 => 3.103-4
・xawtv
 3.103-3+b1 => 3.103-4

[備考]


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