OSのバージョンアップは、決して、「ちょっと気が向いた」時にしてはいけない!
とwww まあ、多くの方にはごく当たり前のことだと思うが、僕はその例に漏れた愚か者だ。
20日の午後。異臭の件で「風待ち」※で少し暇だったので、異臭対応が落ち着いたらやろうと思って居た、デスクトップPCのOS、Linux Mintのバージョンアップの事前検討をした。なお、その前に、ライブメディア(USBブート)で今のPCのハードは問題なく動くことを確認していた(実はこれが墓穴を掘った)。
※窓の塞ぐべき箇所が分かって、強い南風で漏れないかの確認待ちだった。
まず やることを列挙してみたら、項目は結構あるのだが、どれもそんなに大変でない感じだった。それで、つい「ちょっとやってみるか」と思って始めてしまったのが運の尽きだった。14時頃に始めたのだが、まあ、夕方には終わるだろうと軽く考えていた。が、
全然終わらねえ!
そもそも、通常のアップデート自体にすごく時間が掛かるうえにトラブルも発生して、夜中を過ぎても終わらなかった。その通常のアップデートにしたって、バージョンを18から20へと2つ上げるので、普通の2倍の時間が掛かる。更に、事前に知らなかったのだが、途中の19を最新に更新しないと20に上げられないという落とし穴もあり、結局、3段階上げた感じで、なかなかハードだった。
Linux Mintの人は、「問題なければ(急いで・毎回)更新する必要はない」と書いているが、それにならっていたら このありさまだ。まあ、頻繁に(毎年?)少し面倒なのと、たまに(2-3年ごと?)すごく大変なのと、どちらを取るかなのだろうが。
更なる落とし穴は、OSを更新すればそれで終わりではなかったことだ。新しいOSで消滅した・動かない・動きの変なソフトなどが結構あったり、デスクトップ(Xfce)の表示もイマイチになったりして、それをなんとかするのにも苦労し、今日の昼頃に ようやく許せるレベルになった。
それだけ苦労してOSを更新しても、特に何かいいことはないので、踏んだり蹴ったりではあるが、古いOSでは動かないソフトがあったりしたので、まあ、今後数年間使うための準備と考えよう。
以下、細かい話を。
大きな落とし穴
- Linux Minの更新プログラム(mintupgrade)の実行は とても時間を食う。(実際にはUbuntuの更新プログラムが実行されている)
- 何十分でも延々と処理し、吐き出すメッセージの量が半端でない(例: 18→19で約2万行)。そのため、結果のチェックが困難だ。
- Linux Mint 19から20へは直接更新できない。まず、19を19.3に上げておかないといけない。
- 気付いたら、(20でなく)19への更新を2回やっていた・・・
- mintupgradeが失敗したあとの回復手段が不明で、失敗したら奈落の底に落ちる。。。
- apparmorというソフトの影響でmysqlサーバが起動しなくなって、20への更新の途中でエラーで中断してしまったのだが、更新を再開・再実行する方法が分からず、結局、事前にTimeshiftで取っておいたスナップショットで19に戻して(、19.3に上げ、)再度mintupgradeを実行した。
- mysqlサーバが起動しなくなったのは、mintupgradeが勝手にapparmorの設定ファイルを上書きしたため。
- この問題を防ぐため、mintupgradeの実行時に、サーバを自動で再起動しない指定をするか、事前にmysqlサーバを停めておくべきだった。
- mintupgradeは中でUbuntuの更新プログラムを実行しているはずだが、そこらの関係や順序が分からないので、どうにもできなかった。
- 今見たら、mintupgradeはPythonで書かれているので、良く読めば何とかなるのかも知れないが、なかなか・・・
- apparmorというソフトの影響でmysqlサーバが起動しなくなって、20への更新の途中でエラーで中断してしまったのだが、更新を再開・再実行する方法が分からず、結局、事前にTimeshiftで取っておいたスナップショットで19に戻して(、19.3に上げ、)再度mintupgradeを実行した。
- 更新時に勝手に設定ファイルを上書きすることが多い。特に、20にするときは全部上書きされた。
- 新しい版では設定ファイルの書式が変わったりしていて、そうしないと動かないことがあるのは分かるが・・・
- 記録を数えたら、18→19, 19.3→20それぞれ10個ずつ、合計20個あった。
- 「非標準のソフトは知らない」という冷たいスタンスで、基本的には「全部削除しろ」と言われ、残しておいても新しいOSでは動かないものが結構あったし、削除したもので新しいOSの版がないものもあったりして、結構困る。
- これも確かに仕方ないが、もう少しうまいやり方はないものか。
- 特にPythonのソフトには手を焼いた。Pythonはいつもいつもいつも問題を起こすので、本当に嫌いだ。その次はJAVAだ。
動かなく・使えなくなったソフトなど
- jack_mixer (JACKのオーディオミキサー): 起動しなくなった。
- Pythonのバージョン違い(2と3)やライブラリ(pyGTKなど)がなくなった関係 → 古いライブラリを無理やり入れて「なんとか」した。
- gDevilspie (プログラムのUIを自動で変更するDevilsPieのGUI): 起動しなくなった。
- やはりPython → jack_mixerと同様に「なんとか」した。
- gmusicbrowser (音楽プレーヤー, 改造版): 起動しなくなった。
- Perlのモジュールが不足した。あと、今まで出ていなかったバグが露見した。 → モジュールを追加し、バグを修正した。
- Mlhi (自作の音楽鑑賞履歴・感想記録システム)のweb: ページが正常に表示されなくなった。
- Dbusの実行環境の実装が変わったようで、/proc下のdbus-daemonのプロセスのenvironファイルに必要な環境変数が入らなくなくなったため。 → 他のDbusを使うプログラム(例: Spotify, gmusicbrowser)から取るようにして対応した。
- ただ、この環境変数が本当に要るのか、良く考える必要はある。
- Dbusの実行環境の実装が変わったようで、/proc下のdbus-daemonのプロセスのenvironファイルに必要な環境変数が入らなくなくなったため。 → 他のDbusを使うプログラム(例: Spotify, gmusicbrowser)から取るようにして対応した。
- acc-wheel (自作のマウスホイール加速プログラム): 動作しなくなった。
- X11のマウスの検出処理が変わったようで、リモコンもマウスと認識してそれがリストの最初に出るので、本物のマウスのホイールのイベントが取得できなくなった。 → acc-wheelでのマウスの検出方法を変更して対応した。
動作が変わったソフトなど
- Linux
- カスタム起動プログラム/etc/rc.localが2回実行される。
- なぜか、2つのサービス("rc.local.service", "rc-local.service")になっているため。(どちらかは自分で追加したのかも知れないが、定かでない。)
- → rc.local内で重複起動を防ぐようにし、更に、rc.local.serviceを無効にした。なお、rc-local.serviceは自動で作られるので、無効にしても復活する。
- なぜか、2つのサービス("rc.local.service", "rc-local.service")になっているため。(どちらかは自分で追加したのかも知れないが、定かでない。)
- カスタム起動プログラム/etc/rc.localが2回実行される。
- Linux Mintのデスクトップ (Xfce)
- 日本語入力ができなくなった。 → パッケージを追加した。
- パネル (Windowsのタスクバーに相当)
- 入れていたモジュール(ウィジェット?)がなくなった。
- 見栄えが悪くなったが、調整の手段がほとんどない・・・
-
- アイコンのサイズが滅茶苦茶。特にスピーカーが酷い。
- あと、CPU温度(Temp)のグラフが見にくい。
- → 大き過ぎる通知関係のアイコンとCPU温度のバーの太さを調整した。
- (9/24 8:11) 通知関係のアイコンが大き過ぎる問題に対処した。
- PulseAudio(スピーカー)のアイコン(audio-volume-high-symbolic.svgなど)に周囲に余白を付けたものを作った。
- NWのアイコンは、XApp Status Pluginを入れなければ、通知エリアに小さいアイコンが出るようになった。
- ただ、mozcのアイコン(「あ」)が少し小さいが、直せていない。形状の都合で、元々右や下に余白があるせいかも知れない。
- (9/24 10:45) CPU温度のバーの太さが細過ぎる問題に対処した。
- センサープラグインのCSSのlevelbar blockのmarginを負の値(例: -2px)にしたら太くできた。変更部分を~/.config/xfce4/panel/xfce4-sensors-plugin.cssに保存すればいい。
- ただ、枠を消すことができず、枠一杯に太くすると太くなり過ぎて他と合わないのが、ちょっと気に入らない。
- カスタマイズしたキー配置が無効になった。
- 設定が上書きされてしまったため。 → 設定ファイルを戻した。
- mysqlサーバ: 起動しなくなった。
- 上述のとおり、apparmorの設定ファイルが上書きされ、自分で追加したmysqlサーバ用の設定がなくなったため、mysqlサーバがデータにアクセスできなくなったため。 → 設定ファイルを直した。
- サウンド関係: JACK(サウンドシステム)が起動しなくなった。
- JACKのパッケージが変わっていた。 → インストールした。
- PulseAudioの設定ファイルの記述内容(LFE関係)が変わり、自作のJACK起動プログラム(jack-start)のLFE無効チェックに引っ掛かったため。 → jack-startを修正した。
- JACK関係のPulseAudioのモジュール(module-jack-dbus-detect)がうまく動かなくなり、JACKのデフォルトsinkの"jack_out"(または"PulseAudio JACK Sink")が自動生成されなくなった。 → jack-startを対応させた。
- Munin (システム状態表示ツール): いろいろ表示がおかしくなった。
- NW IFが出ない。 → なぜか直った。設定を直したため?
- HDDファンの回転数がおかしい。 → 設定ファイルを復元した。
- CPUなどの温度の出る内容が変わってしまった。→ 設定ファイルを復元した。
- Minisp (自作のSpotifyのミニプレーヤー): 曲情報表示部の高さが2倍に表示される(下に余白ができる)。 → なんとか対応(修正)した。
- 原因不明だが、どうも、Tcl/Tk(ウインドウを描くプログラム)の不具合やX11サーバとの相性のような気がする。Tkのscaling機能を使っているのも一因かも知れない。
- → 最初に曲情報を表示したあとに実際の高さを調べて倍率を計算し、以後はその倍率で高さを調整する(この場合は縮める)機能を追加した。
- その後、メニューやツールチップの文字がすごく小さく表示されることが分かった。どうも、Tkのscaling機能の動作が変わった感じだ。ただ、高さの問題を別とすれば、今のほうが以前よりは正しい動作の気がする。 (9/27 17:05)
- → ようやく原因が分かった。トラック情報の領域(Tkのtext)の高さを画素単位で設定するためにArialというフォントを1ptのサイズで使っている。その高さは、以前は1ptだったと思われるが、今は2ptになったため、高さが2倍になった。小細工をすると、突然動かなくなって なかなか難しい。 (9/27 19:45)
- VirtualBox
- コマンドラインオプション(--startvm)が使えなくなった。 → (VirtualBoxコマンドでなく)VirtualBoxVMコマンドを使うようにした。
- OS更新前に休止した仮想マシンが起動しなくなった。 → 「保存状態を破棄」して再起動した。
- マウス: なぜか、従来のマウス(Microsoft Comfort Mouse 6000)が2つになり、リモコンもマウスとして認識されるようになった。
- XfceとX11の設定を修正し、増えた分を無効にした。
- KeePass, KeePass-HttpConnector (パスワード管理ソフト): FirefoxのBasic認証ダイアログに自動記入できなくなった。: 未解決
- smartctl: ADataのSSD(SX900)のSMARTの値の意味が違う。ズレている感じ。 → ドライブ定義を追加した。
- そのために「異常」の表示になっている。
- 定義ファイルを修正すれば直りそう。 (以前もしたかも知れないが、定かでない。バックアップを見れば分かる。)
- → ドライブDB(/var/lib/smartmontools/drivedb/drivedb.h)のモデル識別のパターンが不足していてデフォルトの定義が使われていたので、追加DB(/etc/smart_drivedb.h)にSX900のパターン("ADATA SX[389]00")と定義("SandForce Driven SSDs"のもの)を追加して、「異常」でなくなった。 (9/23 18:45)
- 以前もした気がして来たが、更新で上書きされたか、いつの間にかなくなってしまったようだ。バックアップにも残っていなかった。
-
RSSOwl: 記事本文の日本語の文字が黒塗りされたようになった。 → QuiteRSSに換えた。
Tips
- mintupgrade実行時は表示を英語にした方がいい。日本語モードで起動しても英語で出るメッセージもあるし、日本語メッセージは分かりにくいし、ログを検索する時に厄介なので。
- 例: export LANG=en_US.UTF-8; export LC_MEASUREMENT=$LANG; export LC_PAPER=$LANG; export LC_MONETARY=$LANG; export GDM_LANG=en_US: export LC_NAME=$LANG; export LC_ADDRESS=$LANG; export LC_NUMERIC=$LANG; export LANGUAGE=en_US:en; export LC_TELEPHONE=$LANG; export LC_IDENTIFICATION=$LANG; export LC_TIME=$LANG
- mysqlサーバが起動しないだけで20への更新が失敗したので、そういうものは更新の前に一旦停止・無効にした方がいい。
- Timeshift(Linux OSのスナップショット作成ソフト)は有用。更新に失敗しても、ちゃんと戻せた。
- Mintのシステムレポートプログラムが結構役に立つ。不足していた日本語対応パッケージのインストールができた。
その他
トラブルは多かったが、何もかも駄目になった訳ではなく、基本的なところや画面に関係ないところ(特にNW関係)は概ね問題なく動いたし、オーディオも意外とサクッと音が出た(もちろん、音質の劣化などもなかった)ので助かった。
あと、更新中もブラウザを始めとする機能が問題なく使えたのは便利だった(使えなくなるのは(当たり前ながら、)再起動する時だけだった)。※ どっかのOSみたいに、「機能を構成しています・・・」とか出て何もできずに延々と待つことはないw
※そのおかげで、更新中のPCで逐次webやEvernoteを参照・記録しながら作業できた。そういう点で、Evernoteなどのクラウド型サービス・システム、軽量クライアント(昔はNCやThin client、今は"VDI", "DaaS", Chromebookなど)はインストールなどが不要でやっぱりいい。でも、軽量クライアントは大昔からいつも成功していないのが謎だ。
更新して良かったことは わずかにある。Xfceのパネルにタイマーアプリ(ウィジェット)があるのに気付き(元からあったと思う)、カップ麺などを作る時に(タイマーの1行コマンドを見つける手間が減って)楽になったw これは、僕が作った1行コマンドとほとんど同じ機能なので感心したうえに、GUIなので残り時間がバーで見えるから便利だ。
- Xfceのパネルのタイマー
- 実行中のタイマー (ベージュ色のバー)
- 現在のXfceのデスクトップ(壁紙)
まあ、真面目な話では、愛用しているPHPが標準で最新の系列になったことだ。今までPPAという外部のパッケージを入れていたせいで、いろいろ無理があったのが解消された。
今のデスクトップ(壁紙)は上のような感じである。少し前にパネルを左端に動かした。
最後に
以前も似たようなことを書いたが、(いろいろいじっているせいもあるが、)OSの更新くらいでこんなに苦労するのでは、さすがに普通の人には勧められない。開発している人たちは、みんな好きで(てんでんばらばらに)作っているのだろうが、普及・存続させたいなら、もっと集まってリソースを効率的に使って使い勝手や質や完成度を向上させるべきだろう。が、僕も含めて、他人の指向や好みを容易に受け入れられない人が多そうだから無理なのだろう。ただ、それだといつか滅亡してしまう気がする。※ カーネルは残っても、デスクトップは難しいだろうな・・・
そこにMSが付け入って来るのかも知れない。将来は、Windowsの下(中身)がLinuxになっている悪寒・・・
※その滅亡を少しでも食い止めることができるかも知れないので(まあ、実際には無理だけど、いつもお世話になっているので)、これが落ち着いたらMintとUbuntuに寄付するつもりだ。
まあ、普通の人に勧めるならMac辺りだな。あれのOS(下回り)はLinuxではないが、(いろいろいじくられてはいるものの)UNIXなので筋は悪くない。基本的にハードの相性問題もない。Appleの言う通りにするのが苦にならない、素直かつリッチな人なら全く問題ないw OSの更新にしたって、いろいろあるにしても、混沌を極めているWindowsよりはいいだろう。
Mac以外なら、Chromebookもいいと思う。あれはそもそもOSの更新が不要そうだし、安上がりだ。死ぬまでGoogleについて行く、魂を売り渡してもいいって人には持って来いだw
でも、どちらにも自由がないから、僕は決して使わないと思う。
これが一段落したら、次はブログサーバのOS(Ubuntu)を更新しなくてはならず、気が重い。やっぱりいろいろいじっているので面倒そうだ・・・
PS. 個人的にはOSのバージョンアップ(特にメジャー)は面倒なので、ない方がいいと思うし、なるべくしたくない。※ なぜ過去と互換性がないように変えてしまうのか、理解はするけど賛成はできない。きっと、そうしないと世の中の進歩に対応できないからだろうが(とは言っても、今回の更新で何が「進歩」したのか不明だw むしろ、劣化したものすらある・・・)、ユーザーの「バージョンアップ作業」を不要にするような うまい手はないものだろうか?
やっぱり、「気付いたら最新版になってた」ってのがベストだと思う。MSは大失敗しているが・・・
※なぜか考えたら、最早僕にはPCは水とか空気みたいなものなので、特に気合入れずに普通に使えればいいからってことに気付いた。だから、VDIのように存在すらなくてもいいのだ。オーディオと全く一緒で、「普通に」使えるだけでいいのだ。余計な個性とか主張とか全く不要。もちろん、息を吸うように自由に使えることが前提。
その一つが本文に書いた軽量クライアントだと思うのだが、なぜかずっと劣勢だ。でも、これからは違うかも知れないから、それに期待したい。
PS2. 今回は、動作確認から更新まで、DVDなどの光メディアを全く使わなかった。インストールしないで確認するライブメディアはUSB HDDが使えたし、更新はNWからダウンロードだった。円盤で音楽を聴くとか動画を観るとかでない限り、もう内蔵光ドライブは全然要らなそうだ。
(9/23 18:45 AData SSDのSMARTが異常な件の対処を追記; 9/24 8:11, 10:45 パネルのアイコンなどを調整した件を追記; 9/24 12:39 RSSOwlからQuiteRSSに換えた件を追記; 9/27 17:05, 19:45 Minispの修正の件を追記; 9/28 12:51 "minisp"を"Minisp"に修正, 変更履歴の記載漏れを記載)
naoki: 2020-09-23 16:30
僕が放ったらかし(というより知らなかったに近い)にしてた案件です。
そうかあ、このように大変なんですね……。
れんと: 2020-09-23 16:36
●ええ、僕の予想を軽く超えてましたwww それで、なおきさんは大丈夫かとちょっと心配してました。でも、普通にやるなら、もう少し楽かも(だったらいいな)・・・