Debian Advent Calendar 2024の4日目の記事です。
個人的に印象に残ったDebian sidで踏んだ不具合をピックアップしてみました。
2024年はけっこう豊作だった気がします。(特に記録をしていたわけではないので気分です)
これから年末にかけて踏む可能性もまだ十分にあります。楽しみですね。
Debian sidそのものの不具合というよりかはupstreamの問題がパッケージ化されて広く使われるようになったことで踏みぬいたというケースも含んでいます。
Debian sidはunstableというわりには安定していますが、それなりに不具合を踏む機会は残されているので、新しいバージョンを積極的に使って踏み抜いてフィードバックしたい人にとってはよい環境なのではないでしょうか。
XZにバックドアが仕込まれていたという例の件。
よりアップロードされるパッケージに関して透明性を高めようというtag2uploadの動きとも重なる事件でした。
GTK2のセキュリティアップデートを適用したら、日本語入力できなくなるなど広範囲に影響を与えた不具合。
bullseyeとかbookwormなどの安定版へのバックポートがなされたので、職場の同僚も踏んでいました。
stableは安定しているというのは確かにそうなんですが、それはそうあるべく維持している人たちがいるからなのです。
とはいえこういうリグレッションが発生してしまった稀有な事例でした。
GNOME以外のデスクトップ環境でevinceとかgnome-terminalの起動が異常に遅くなるという不具合です。
当時budgie-desktopを使っていたので、この不具合を踏みました。
対策として、当時はxdg-desktop-portal-gnomeを削除してあげる必要がありました。
budgie desktopってmagpieがまだパッケージングされていないため新規でインストールできなくなってしまっているのが切ないところです。
libmagpieがDebian sidにはいったのでDebian sidでも新規にbudgie-desktopをインストールできるようになりましたね。
ただ、この問題また再発しているような気がします。
GNOMEとbudgie-desktop両方デスクトップ環境を選択できるようにインストールしたままにしていると、xdg-desktop-portal-gnomeも依存でインストールされているので発動します。
xdg-desktop-portal-gnomeを削除すると、GNOMEもまるっと消えるので、GNOMEとの共存はあきらめたほうがよいかもしれません。
xdg-desktop-portal-gnomeを削除してしまえばよいのだけれども、
task-gnome-desktop => gnome-core => gnome-session => xdg-desktop-portal-gnomeという依存関係があり、
xdg-desktop-portal-gnomeを削除するとgnome-sessionも消えてしまいます。
いざというときのデスクトップ環境の切り替えに支障をきたしてしまう。
というわけで、回避策として、xdg-desktop-portal-gnomeをマスクすることにした。
systemctl --user mask xdg-desktop-portal-gnome
GNOMEデスクトップ環境にログインするときは設定を戻しておかないとたぶんフル機能は使えないだろうが、そのときはそのときでしょう。
/usr/share/xdg-desktop-portal/budgie-portals.confではxdg-desktop-portal-gtkを優先して使いそうなのだけれども
xdg-desktop-portal-gnomeもインストールされている状態だと期待通りに動作しないのかもしれない。
Bluetoothのヘッドセットは接続できているのに、Web会議で他の人の話す声が聞こえないことで気づいた不具合でした。
急遽USBなヘッドセットでしのぐ羽目になった不具合です。(こんなときのために有線のやつを必ずバックアップで保持しておきたいですね)
wireplumber 0.5.5-1で修正されました。
/bootが小さいとカーネルを更新できなくなる不具合。
パーティションの切り方次第で困ったことになる強烈な不具合だったという印象です。
initramfs-toolsはカーネル更新のたびにinitdを再作成してくれているのですが、firmware-nvidia-graphicsをインストールした環境だと
重複したファームウェアのファイルをまるっと含めてしまうのでinitrdが肥大化しすぎて/bootに収まらなくなりカーネルの更新に失敗するというものでした。
たしか問題のあるinitramfs-toolsではinitrdが圧縮後で230MBくらいになってしまっていたはずです。
そのためカーネルイメージを複数世代保持しておくことができなくなるつらいやつです。(新しいカーネルで起動できることを確認してから古いカーネルイメージを削除するということができない)
インストール方法によっても変わってきますが、/bootの既定値が512MBくらいなのであっさり超過してしまい踏み抜くやつでした。
現状起動できているカーネルを削除して、新しいカーネルをインストールするというのは賭けなので、おとなしくinitramfs-toolsが更新されるまで待つ必要がありました。
この不具合自体はあまりあってほしくないのですが、nvidia-kernel-dkmsでnvidiaのモジュールがビルドできないという不具合です。
当時nvidia-firmware-gspが古いまま更新されないという別の不具合があり(バグ番号は失念)、nvidia-kernel-dkmsでモジュールがビルドできるようになったので
油断して再起動をかけたところ古いnvidia-firmware-gspと新しくビルドしたnvidia-kernel-dkmsのモジュールのバージョンの不整合によりモジュールが読み込まれず
gdmが起動しないという不具合を踏みました。電源いれてデスクトップ環境があがってこなくて焦った記憶があります。
Ctrl+F2だかでコンソールに切り替えてnvidia-firmware-gspを更新して復旧させました。
Bluetoothはちょいちょい不具合を踏み抜きがちな機材の一つという印象があります。
それまで普通につかえていたペアリング済みのBluetoothヘッドセットの電源を入れてもつながらず、USBなヘッドセットでしのぐ羽目になった不具合です。
Bluetooth関連だと起動時に以下のようなエラーが発生していたのをsudo dmesg
で確認しています。
[ 8.456184] Bluetooth: hci0: command 0xfc05 tx timeout
[ 8.456186] Bluetooth: hci0: Reading Intel version command failed (-110)
回避策としてはbtusbモジュールを再読込して、hciconfigでリセットしなおすというのを実行する必要がありました。
sudo rmmod btusb
sudo modprobe btusb
sudo rfkill unblock bluetooth
sudo hciconfig hci0 reset
sudo hciconfig hci0 up
そのあとヘッドセットの電源を入れ直す必要があって面倒でした。
https://tracker.debian.org/news/1561446/accepted-linux-signed-amd64-61071-source-into-unstable/
この問題はlinux-image-amd64 6.10.7-1で発生しなくなりました。
たぶん以下の変更が影響したんじゃないかと思っているが確証はありません。
- Bluetooth: HCI: Invert LE State quirk to be opt-out rather then opt-in
ansible-core 1.7.3でファイルをローカルからサーバーにコピーしたときにmtimeが更新されない問題です。
サーバー側のファイルのタイムスタンプの更新を前提として発動するプログラムが期待通りに動作しないという事がありました。
(サーバー側に配備した設定ファイルが更新されたらコンパイルするしくみが動作せず、設定を変更しているのに反映されなくて問題になった)
upstreamでは修正されているようですが、Debian sidのansible-coreは1.7.3-1なので(2024年9月時点)、不具合を踏みます。
#1078779 - ansible-core: Ansible not updating mtime on changed files, keeping old mtime!!! - Debian Bug report logs にてフィードバックがなされているので修正が待たれます。
2.17.5に更新されたので問題が解消しました。
この記事はUHK 60 v2で書き上げました。