lsblk -Pなど出力フォーマットの仕様変更
「lsblk」など「util-linux」パッケージから提供されるコマンドの出力フォーマットが一部変更されています。util-linuxパッケージ
「util-linux」パッケージは、システムのユーティリティーを提供するパッケージです。このパッケージには、ユーザーや管理者がよく利用するコマンド群が含まれています。
util-linux 2.37で仕様が変わる
現在「Ubuntu 22.04 LTS」で利用可能になっている「util-linux 2.37.2」では、「lsblk」や「libsmartcols」に依存する同種のツールの挙動が変更されています。例えば「lsblk -P(--pairs)」コマンドの出力では、「LOG-SEC」が「LOG_SEC」に変更されるなど、シェル変数と互換性のある文字列のみ使用するように変更されています。
The key (variable name) will be modified to contain only characters allowed for a shell variable identifiers, for example, MIN_IO and FSUSE_PCT instead of MIN-IO and FSUSE%.
この仕様変更は、以下の要望によるものです。
修正内容は以下を参照してください。
このままだとソフトウェアが動作しなくなる
これらのコマンドの出力に依存しているスクリプトやソフトウェアは、この仕様変更に追従しない限り、期待したとおりに動作しなくなります。仕様変更を依頼する
そこで「Ubuntu(Canonical)」のエンジニアは、この挙動を元に戻し加えて上記の要望を満たせるようにするため、「-y/--shell」オプションの導入を提案しました。この提案は2022年2月4日に行われ、2022年2月11日に修正が行われました。
修正内容は以下を参照してください。
修正はutil-linux 2.38から
修正が行われたとは言え、その修正が盛り込まれるのは「util-linux 2.38」以降になる予定です。また修正内容も10を超えるパッチ群に別れており、該当箇所を「util-linux 2.37.2」に適用しようにもソースコードの変化量が多くリグレッションのリスクがあり、「util-linux 2.38」のバックポートが必要な状況です。
Ubuntuの対応方針の検討
というわけで「Ubuntu 22.04 LTS」での対応方針が検討されています。1.何もしない
何もせずこのまま挙動の変更を受け入れる方法です。ただし「Ubuntu 22.10」では「util-linux 2.38」以降のバージョンが採用されるため、再度挙動が元に戻ります。
もちろんコマンドの出力に依存しているソフトウェア側は、挙動の変更に合うように修正が必要になります。
2.修正パッチを取り込む
修正パッチを「util-linux 2.37.2」に取り込む方法です。該当部分の挙動は従来のままになるだけでなく、ユーザーは必要に応じて「-y/--shell」オプションも利用可能になります。
ただしリグレッションのリスクがあります。
3.挙動を以前のバージョンに戻す
「util-linux 2.37.2」の該当部分の挙動を元に戻す(以前のバージョンに戻す)方法です。この方法が既存ソフトウェアとの互換性及び品質の面で一番安全性が高いでしょう。