使用している計算機のシステムを Debian 7 (wheezy) から 8 (jessie) に更新した際の記録。
バージョンアップに伴うソフトウエアの仕様の変化で戸惑ったのは次の点。
Gnome が 3.4 から 3.14 に上がったことに関係する。 その他のデスクトップ周りの変更は、設定を見なおせばすぐに対処できた。
他に遭遇した問題は
主な用途がデスクトップのせいか、 systemd に直接関係する問題には遭遇しなかった。
/etc/debian_version は 7.8 で wheezy-backports と deb-multimedia (Debian Multimedia) のパッケージも利用。
カーネルは wheezy-backports の linux-image-3.16.0-0.bpo.4-amd64 を利用。
デスクトップは Gnome3 (LANG=ja_jp.utf8 の環境で gnome-shell)を利用。 日本語入力は ibus-mozc を使用。
問題がなければ更新後も同様の構成で使うつもり。
amd64 アーキテクチャなので Debian 8 (jessie) リリースノート (64 ビット PC 用) を確認する。
中途半端なインストール状態のパッケージがないか調べる。
wheezy# dpkg --audit
以下のパッケージは、データベース中に md5sums 制御ファイルが見つかりません。
再インストールする必要があります:
rxvt VT102 terminal emulator for the X Window System
git-core fast, scalable, distributed revision control system (obso
rxvt-ml multi-lingual VT102 terminal emulator for the X Window Sy
xcolorsel display colors and names in X
と言われた(端末幅により出力の行末が切れる)ので、
wheezy# apt-get install --reinstall rxvt git-core rxvt-ml xcolorsel
これで dpkg --audit が無口になった。 dpkg -l | egrep -v '^ii' は rc 状態のパッケージをいくつか出しただけ。 特に hold すべきパッケージも思いつかない。
素直に /boot と / をバックアップ。
wheezy# dump -0 -f boot.dump /dev/sda1
wheezy# dump -0 -f root.dump /dev/sda5
面倒だったのでシングルユーザーモードにせずに実施。
/home のバックアップは省略。
最低限 /etc のバックアップをとっておくとよい。 あと dpkg -l の結果も残しておくと重宝しそう。
wheezy% dpkg -l >wheezy.pkgs
apt の sources.list 等の wheezy を jessie に置き換え、 標準外のリポジトリ(proposed-updates, backports, deb-multimedia)を コメントアウトして apt-get update した。
この段階では wheezy を jessie に置換するのではなく jessie 用のリポジトリを追加するだけの方がよかったかも。 特に wheezy 用の security.debian.org の設定は残しておくべきだったろう。
apt-get -s upgrade を見ると更新を含めて 585 パッケージが入る。
この段階なら簡単に引き返せるので、どうしても消されると困るパッケージが消されないか apt-get -s dist-upgrade も確認するとよい。
とりあえず先にパッケージだけ取ってくる。
wheezy# apt-get -d upgrade
パッケージが揃ったら
wheezy# script -t 2>jessie-0.time -a jessie-0.script
wheezy# apt-get upgrade
表示された apt-listchanges を確認して続行。 つつがなく完了。
Debian 更新時の最大の作業、 apt-get -s dist-upgrade を見て対処を検討する。
upgrade して dist-upgrade しない状態だと wheezy と jessie の両方の security.debian.org を扱うなどの運用が必要だろう。
いくつか気になるパッケージが削除されるので個別に調べる。
ia32-libs-i386:i386 が消される。代りに ia32-libs を入れようとすると
... the following packages replace it:
lib32ncurses5 lib32bz2-1.0 lib32asound2 lib32z1
と言われる。 lib32asound2 lib32v4l-0 も削除対象。
lib32asound2, lib32v4l-0 は jessie には候補がないが libasoud2:i386, libv4l-0:i386 がインストールされるので 問題なさそう。
まとめると、 bzr-fastimport, bzr-git, galeon, tkman, totem-mozilla が無くなる。 totem は dist-upgrade 後に再インストールが必要。
おそらくは glib-networking → libglib2.0-0 → libc6 の依存関係で libc6 に依存するパッケージを更新しようとするといくつかのパッケージの削除を求められる。
事前に apt-get -d dist-upgrade でパッケージを取ってきておく。
意を決して dist-upgrade する。 表示された apt-listchanges を流し読みして続行。
途中で何度かサーバープロセスの再起動確認などがあるので完全に放置はできない。
いくつか設定ファイルの更新/維持についてきかれる。 即断できない場合は現状維持を指定して後で手作業で更新した。
/etc/init.d/networking /etc/apache2/mods-available/mime.conf 新版で置き換え
/etc/gdm3/daemon.conf 旧版の設定を残した。
/etc/updatedb.conf PRUNEFS="..." の右辺にある lustre_lite を lustre に変更。
2時間15分かかって完了。
apt-get install totem してとりあえず終了。
いくつかエラーメッセージが出ていた。
何も設定ファイルを残していないパッケージを完全削除(purge)。
まず
jessie# echo $(dpkg -l | egrep '^rc' | while read a pkg b
do
LANG= dpkg -L $pkg | grep -q "does not contain any files" && echo $pkg || :
done)
の内容を確認して(|| : は zsh で trap ... ZERR を設定しているのでその対策)、 echo を apt-get remove --purge に置き換えて実行。
後は dpkg -l | egrep '^rc' を見て、未練のないパッケージを完全削除。 oapach2.2-common の設定ファイルは残しておいた。
何か代替のパッケージが入るから消されるのだろうと思っていたが gnome-control-center は必要だったので入れなおした。 そもそも個別にパッケージを指定せず task-gnome-desktop を入れた。
/etc/logrotate.d/apache2 の daily を weekly にし、 rotate 14 を 52 に変更。
再起動前に新しい grub を起動デバイスにインストールすべきだったが 気づかずに古い版の grub のまま(grup-update が更新した設定ファイルで)再起動した。
再起動時に file not found というようなメッセージがいくつか出たが何事もなく起動した。 エントリ名の変更で savedefault が効かなかったせいかもしれない。
再起動後 grub-install /dev/sda で ブートセクターを更新した。 起動時のエラーメッセージも出なくなった。
再起動すると DHCP でアドレスを取得できず、ネットワークが使えない(場合がある)。 手動で ifup/down しようとしても /run/network がないため次のエラーが出る。
jessie# ifdown eth0
ifdown: failed to open lockfile /run/network/.ifstate.lock: No such file or directory
手動で /etc/init.d/networking restart すると次のメッセージが出たが IP 通信可能になった。
jessie# /etc/init.d/networking restart
[....] Restarting networking (via systemctl): networking.serviceJob for networking.service failed. See 'systemctl status networking.service' and 'journalctl -xn' for details.
failed!
systemctl status -l networking がいくつかのエラーメッセージを出す。
どうやら /etc/rc?.d の下の networking へのシンボリックリンクがなくなっていて /etc/init.d/networking が呼ばれていないよう。
シンボリックリンクを作成するためパッケージを入れなおした。
jessie# apt-get install --reinstall ifupdown
/etc/rc?.d/???networking が作成された。
入れなおさなくても dpkg-rereconfigure ifupdown すれば済んだと思う。
これで systemctl restart networking すると systemctl status -l networking が文句を言わなくなった。
/var/lib/dpkg/info/ifupdown.postinst を眺めた限りでは update-rc.d は 必ず呼ばれそうなので原因不明。 インストール時に設定ファイルの更新確認で現状維持を選んで、後で手作業で maintainer's script に置き換えたことと何か関係する?
apt の sources.list に security update を追加して apt-get update, upgrade する。
また deb-multimedia のリポジトリも有効に戻して更新。
カーネルを含めて更新されたので再起動。
デスクトップ周りの設定が少し変更され、一部の設定は引き継がれないようなので システム設定(gnome-control-center)や Tweak Tool(gnome-tweak-tool) を起動して適宜設定した。
ハイバネートのメニューがどこにも見当たらない。 Alternative Status Menu Extension は Gnome 3.14 では使えないよう。
iceweasel で Hibernate Status Button を訪れて有効化した。 これで Status menu の電源ボタンの横にハイバネートのボタンが追加された。
噂の IBus 1.5 問題。 上部のシステムトレイに IBus のアイコンが出なくなった。
IBus 1.5 の設定方法は /usr/share/doc/ibus/README.Debian.gz にある。
登録するのは ibus-mozc であって、 ibus ではない。 利用する入力メソッド(エンジン)毎に入力ソースとして登録する。
登録するとキーボードレイアウトの切り替えにより ibus-mozc を呼び出せるようになる。 デフォルトでは Super + Space で切り替える。
切り替えるとディレクトリスタックのように交換されるので再度 Super + Space を押すと(第3の入力ソースに切り替えるのではなく)元に戻る。 実質上トグルキーのように扱える。
この切り替えを使うなら Mozc の方は常時ひらがな入力にしておける。
左 Super はアクティビティ画面の呼び出しにも割り当てられているので キーを離すタイミングによって煩わしいことになる。
キー割り当ては、 システム設定 → キーボード → ショートカットタブ → タイピング → 次(前)の入力ソースへ切り替える で指定できる。
「次の入力ソースへ切り替える(修飾キーのみ)」 のキーを使うとトグルせず巡回的に使えるよう。 こちらの設定は Tweak Tool (gnome-tweak-tool) でも設定でき、指定できるキーの種類も多い。
性質上 ibus-setup コマンドでのキー割り当ては(Gnome のこの機構を使う限り)機能しない。
キーボードレイアウトが固定でよく、入力メソッドも Mozc だけしか使わないなら Super + Space での切り替えを使わず、常時 Mozc を唯一の入力ソースとして使う方法もとれる(多分)。
Mozc 側で必要に応じて直接入力/かな入力を切り替えればよい。
Mozc のプロパティ設定のキー設定で割り当てを追加/変更できる。 ただし Alt や Super キーは指定できなかった。
モード: 入力文字なし
入力キー: Ctrl =
コマンド: IME を無効化
モード: 変換前入力中
入力キー: Ctrl =
コマンド: キャンセル後 IME を無効化
モード: 直接入力
入力キー: Ctrl Space
コマンド: ひらがなに入力切替
国際 AltGr デッドキー(en₁), US 国際 デッドキー(en₂)の 2種類のキーボードレイアウト(入力ソース)を登録しているが、 Mozc に切り替えた際には切替前のレイアウトが使われる。
右Alt + r を押した時、 en₁ だと ë, en₂ だと ® が入力されるという違いがあるが、 Mozc の直接入力で入力される文字は切り替え前が en₁, en₂ のどちらだったかによって ë か ® となった。
特に、 en₂ から切り替えた場合は ` ~ などがデッドキーとなる。
「キーボードレイアウトの表示」ではこの状況を確認できない (gkbd-keyboard-display -l default が実行される)。
「次の入力ソースへ切り替える(修飾キーのみ)」 で割り当てた修飾キーで切り替えた場合の振る舞いは異なる。 この修飾キーでの切り替えと Super + Space での切り替えを混用するとシステムトレイの表示と一致しなくなることがある。
Gtk+3.6 あたりでスクロールバー(GtkRange)の挙動を変えたらしく、中(第2)ボタンのクリックが効かない。
スライダーを指定位置に瞬間移動させるには中ではなく左クリックする。 従来の左クリックによる1ページ分移動には右クリックを使う。
Gtk+2 を使っているアプリケーションは従来通りの振る舞いなので統一されないと使いづらい。
でこの挙動は ~/.config/gtk-3.0/settings.ini の設定で変更できるということで、 [Settngs] セクションに gtk-primary-button-warps-slider = false を追加した。
[Settings]
gtk-primary-button-warps-slider = false
この設定をして Gtk+3 のアプリケーションを起動すると従来と同様の振る舞いになった。 primary-button という名前だが中、右クリックの挙動も変化した。
コンソールのキー割り当てが変化していたので調べると、 /etc/default/keyboard の XKBOPTIONS の値がクリアされていたので元に戻した。
この設定は IBus の設定前に対処しておくべきかも。
ログを見ると keyboard-configuration パッケージの設定がされているので この時に(手で設定した値が)落とされたのだろう。
タブと端末のタイトルの扱いが変わった。
今まで独立していた、タブ/ウインドウで端末を開くメニューが端末を開くに一本化された (両方共ショートカットは健在)。 タブ/ウインドウのどちらを開くかは設定で指定する。
またタブを開いた時にカレントディレクトリが維持されなくなった。 今までと同じ挙動を期待するなら .zshrc などで明示的に . /etc/profile.d/vte.sh する。
ウインドウの高さ(端末の行数)が知らないうちに減るという怪奇現象に遭遇した。 タブを使っている場合だけ発生する。
エスケープシーケンスを使って端末のタイトルを設定する際に発生するようで、タブの中で
echo -n "\e]2;|\a" && sleep 0.1 && echo -n "\e]2;x\a"
を実行する(タイトル "|" → "x")と端末の行数が1行分縮小する。
試したところでは、設定するタイトルが 英字を含む → 含まない の切替だと2〜3ピクセル、 英字を含まない → 含む の切替だと1行分 高さが縮む。
日本語環境だとタイトルの初期値が「端末」で、これを英字を含む文字列に変更すると縮む。 このため vim が端末のタイトルを設定/回復することで端末の行数が減っていた。
echo -n "\e]2;${TTY#/dev/}@$HOST\a\e[8;${LINES}t\a"
のように行数も指定(\e[8;${LINES}t\a)すれば縮小せずに英字を含むタイトルをつけられた。
なので .zshrc 中で $TERM == xterm の場合に上の echo を呼ぶようにした。 英字を含まないタイトルはあまり指定しないだろうからこれで実用上支障なさそう。
他の回避策としては、
今の gnome-terminal は
のでタイトルの初期値を変更して起動できなかった。
vlc を deb-multimedia の 2.2.1 版に更新した後で EasyCAP のキャプチャー動画を再生すると、 10秒くらいで次のエラーが出て音声が出なくなる。
[00007f8a5c0009b8] core input error: ES_OUT_SET_(GROUP_)PCR is called too late (pts_delay increased to 300 ms)
[00007f8a5c0009b8] core input error: ES_OUT_RESET_PCR called
この問題はオーディオデバイスの設定で PulseAudio を使うようにすると発生しなくなった。
その後、ツール → 設定 で設定をリセットしたところ、 PulseAudio がオーディオデバイスの選択肢から消えたが問題なく再生できる。
EasyCAP (Fushicai usbtv007 チップの USB アナログ動画キャプチャー)で音声が扱えなくなった。
dmesg には Fushicai USBTV007 Video Grabber Driver と出ている。 今までは Audio-Video Grabber と出ていたのでドライバーが異なる。
調べると、記憶になかったが、今までは自分で入れた音声対応の usbtv ドライバーを使っていた。
jessie のカーネル用に Audio-Video な usbtv ドライバーを DKMS を使って再作成して入れて解決。 音声対応のドライバーは 3.18 のカーネルから組み込まれるよう。
xfonts-unifont パッケージの pcf フォントの XLFD 名がスタイル名 Sans を含むように改名された。
XLFD 名で指定する際はスタイル名 Sans を省かずに指定する。
-gnu-unifont-medium-r-normal-sans-16-160-75-75-c-80-iso10646-1
など。
戻る $Id: upgrade.txt 2015-05-20 21:31 $