Debian testing/sidを使う上での大切なマインド4選

音鳴らん!

僕はDebian GNU/Linuxのtestingを使っているので、ちょくちょく「sudo apt-get dist-upgrade」を実行しています。

ずっとstableを使っていたのですが、パッケージがあまりにも古いのでメイン機には使えないから乗り換えました。

sidでテストされているものがtestingに降りてくるので、sidほどではないもののパッケージは準最新のものが使えます。

さて、いつもdist-upgradeしていると(準)最新のパッケージになるので嬉しいのですが、たまに困ったことが起きます。

それは、いつも動いているものが更新によって動かなくなることです。

しかも再起動するまで気付かなかったケースとかも…


今回困ったのは、再起動したらUSBオーディオから音がでなくなったことです。

Debian GNU/Linuxは再起動が要求されることはめったにないのですが、「気分的に」再起動をしてみたら音がでなくなりました。

まずはUSBオーディオを一旦USB端子から外し、ふたたびつなげました。

USBオーディオのトラブルはたいていの場合、再接続したら直るからです。

それでも直らなかったので、ふたたび再起動しました。

Windowsでは問題が起きたら再起動というのが常套手段だと思いますが、Debian GNU/Linuxでも同じです。

それでも治りませんでした。

ログ読むか

んーなんでだろう…再起動前までは音なってたのに………

考えること5分、原因はきっとdist-upgradeのせいだなと…



ログを読もう。なにが起きたのかが書いてあるはず。ということで /var/log/apt/history.log を読む。


Start-Date: 2014-07-23 13:38:37
Commandline: apt-get dist-upgrade
Install: (ry
Upgrade: (ry, alsa-utils:amd64 (1.0.27.2-1, 1.0.28-1), alsa-base:amd64 (1.0.25+3, 1.0.27+1), (ry
Remove: (ry
(ry

alsa関係が更新されていた、そこが臭う。

alsa-baseを読もう

/usr/share/doc/alsa-base/changelog.gz をみてみると、


* Remove all package contents, and tweak package descriptions to note
this is an empty, dummy package.

と書いてあり、じゃあ、なにが削除されていたのかなと古いバージョン alsa-base_1.0.25+3~deb7u1_all.deb の中身を見る。

ちなみにdebはarアーカイブで、Emacsならばそのまま開ける。

その中にdata.tar.gzがあるので、それがパッケージの中身。

Emacsならそのまま開ける。

なるほど、これがalsa-baseの内容か。


-rw-r--r-- root/root 1186 ./etc/modprobe.d/alsa-base.conf
-rw-r--r-- root/root 229 ./etc/modprobe.d/alsa-base-blacklist.conf
-rw-r--r-- root/root 637 ./etc/default/alsa-base

同じように最新版alsa-baseの内容を見てみたが、上のファイルがない。

というわけで /etc/modprobe.d を開く。

見てみると、構成がかわっていた。

alsa-base.conf.dpkg-bakとsound.confというファイルができていた。

解決!

なるほど、元々あったalsa-base.confが無効になってたのね。

sound.confが新しい設定…

options snd_usb_audio index=0

とだけ書かれていたので、それが音がなってない原因…


というわけで、alsa-base.conf.dpkg-bakの内容をsound.confにコピペして、元のsound.confの内容をコメントアウトした。

そしたら無事に音鳴った!!!!

教訓

そこで得た教訓がいくつかあります。

まず、dist-upgradeするのは時間に余裕があるときにやること。アップグレードで問題が発生することがあるので、それを解決するだけの時間を確保することです。とはいえ、常時接続のマシンでdist-upgradeが遅いとセキュリティ問題になるから、放置もいけないです。まあバランスで。

次の教訓は、たまにでも再起動することです。再起動した後に問題が発覚することがあるからです。

もうひとつ、困ったらログと/usr/share/doc/XXXX/changelog.gzを見ること。パッケージの変更が原因っぽかったらchangelogを見るのは当たり前です。

最後に、最新のソフトウェアが簡単に導入できるのは素晴しいですが、最新を保つにはそれ相応の苦労があることを受け入れることです。Debian stableは更新が遅いので、パッケージに満足していれば長期間安定しますが、その反面、パッケージが古くなってしまいます。

物事はなんでもそうですが、結果を得るためには、あるものを犠牲にする必要があります。stableよりも新しいパッケージが使いたいからテスト版(testing)を使っているのですが、不意に問題に直面する頻度が上がることです。新しいパッケージと引き換えに安定性(アップグレード時のトラブル)が犠牲になりました。でも、このようなトラブルをたくさん経験すると勘と問題解決力が身に付きますので、悪いことではありません。問題は人間を成長させてくれます。