2023年6月26日月曜日

Debianをアップグレードしたらaptが動かなくなった件

放ったらかしにしていた実験用のVPSがdebianのstrechから更新されておらずメンテ期間が切れてaptの更新が出来なくなったので最新にアップグレードをする事にしたのですがトラブったのでそのメモを。


現在の最新はbullseyeなのですが一気に上げると多分何か起きるだろうなと思い一つずつ上げていくことに。余談ですが調査の段階で本家のページを見たのですが日本語ページが全然メンテされていないようですね・・・。debian好きなんだけど日本ではもうubuntuとかしか触る人が居なくなっちゃったのかな。


とりあえず更新方法は深くは書きませんが、まずは/etc/apt/sources.listの中身をstrech(9)からbuster(10)の物に更新をしてapt update & apt upgrade & apt autoremoveをし、その後buster(10)からbullseye(11)にします。本当はもう少し色々やったほうが安全なんでしょうが今回はこれでやりました。


で、結果として更新、起動は問題なく出来ましたがbullseye環境でapt upgradeをすると下記のようなエラーが表示されるようになりました。


Setting up python3-reportbug (7.10.3+deb11u1) ...

  File "/usr/lib/python3/dist-packages/reportbug/bugreport.py", line 154

    headers += f'Control: tags -1 {self.tags}\n'

                                               ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/debbugs.py", line 789

    pseudos.append(f'Control: affects -1 src:{package}')

                                                      ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/submit.py", line 395

    if ui.yes_no(f'SMTP send failure: {x}. You can retry, or save the report and exit. Do you want to retry?',

                                                                                                            ^

SyntaxError: invalid syntax


  File "/usr/lib/python3/dist-packages/reportbug/utils.py", line 567

    print(f"Cannot look up source package: '{e}'")

                                                ^

SyntaxError: invalid syntax


ぐぐってみるとstrechからbullseyeに直接上げてこのエラーが起きているけど結論として何も解決策も書かれていない状況でした。という事で自力で解決する必要があります。


まずヒントとしてsyntax errorが出ていること。真っ先に疑ったのは実はpythonが未だに2系のままとかなのかなという点。バージョンを確認してみます。


$ python --version

Python 2.7.13

$ python3 --version

Python 3.5.3


無印のpythonが2.7なのが問題なのかと思いましたがよく見るとpython3を参照しています。で、ポイントがpython3のバージョン。syntax errorが出ているのはどれもf文字列を使用しています。確認してみるとf文字列は3.6以降の実装でサポートとあるのでほぼこれが原因でしょう。ということでpythonを更新する事にしますがaptが動かない状態でどう更新を行うべきか。そこが問題になります。

とりあえずapt-getでトライ

$ sudo apt-get install python3

普通に成功して拍子抜け。下記の選択肢は一番上の現状のものを差し替える選択にします。怖い人はデフォルトの現状のものをキープにして後からaliasを差し替えても良いと思います。そしてバージョンを確認します。

$ python3 --version
Python 3.9.2

いい感じです。apt update & apt upgrade & apt dist-upgradeをトライ。いい感じに更新されてくれました。

とりあえずこの状態で使ってみることにします。



2023年5月8日月曜日

Lubuntuを再インストールしてみるメモ

元々Windows入れて使ってたマシンのSSDがぶっ飛んで補償交換待ちの間の暫定でLinuxを使ってみていたけど同じPCでもソフトシンセやら開発環境が思いの外軽いとかメリットもあったのでこのPCはこのままLinux運用にする選択に決定。


なお、USBメモリに入れたLubuntuが見事に爆死してメモリが壊れたので今回は余っているSSDに入れ直すことにする。インストール元は前回と同じUSBメモリに入ったインストールイメージなんだけど今回は当然だけどめちゃくちゃ高速にインストール終了。USBメモリへの場合は書き込み遅すぎて死んでるのかと思ったレベルだったのでやっぱり書き込み速度の差はエグい位アルネ。安いUSBメモリってSDとかに比べても何であんなに遅いのか謎だけど。SCSI喋ってるのとかは別に関係ないよなぁ・・・。


今回はちょっと趣向を変えてswapやらrootやら無しのSSDまるまる1パーティションでルート(/)にマウント。ファイルシステムはbtrfsにした。クライアントのデスクトップだとこんなんで良いはず。自分でLinuxいじらなくなって久しい(少なくとも転職後は一切触ってないから6年位?)ので流行りが分からないけど結局今のファイルシステムのトレンドってどうなったのよ・・・。なんか結局ext4使い続けてそうな雰囲気ではあるんだけど。


## まずはパッケージの更新


$ sudo apt-get update
$ sudo apt-get upgrade


初回は結構時間がかかるので気長に待つ。余談だけど最近調べるとapt-getでもaptitudeでもなくaptを使わせる例が多い気がするけどトレンドが変わったのだろうか?


## 音が鳴らない問題の解決

$ alsamixer


F6を押してオーディオデバイスを選択する。このPCは内蔵のオーディオデバイス以外にHDMIから音声を出力を出来るので内蔵デバイスを選択する。


カーソルキーの左右でheadphoneを選択し、カーソルキーの上下でボリュームを最大にする。


エスケープキーで抜けたあと設定を保存する

$ sudo alsactl store

## 日本語入力を出来るようにする

$ sudo apt install ibus-mozc
$ sudo apt install fcitx-mozc
$ sudo apt install fonts-ipafont fonts-ipaexfont fonts-takao fonts-vlgothic
$ sudo apt install language-pack-ja

一度ログアウトしサイドログインしなおす。なんか前回USBメモリに入れた時と見た目が違う気がするけど・・・とりあえず深くは追求しない。

「JA」アイコンを右クリックし「preference」を選択

「Input Method」タブを選択しMozcを追加


あとはCtl+Spaceでmozcに切り替えて、半角/全角キーで日本語とアルファベットの切り替えが出来るようになる。

## Google Chromeを入れる
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
$ sudo apt install ./google-chrome-stable_current_amd64.deb

前回USBメモリに入れたときは重すぎて実用的じゃなかったけどSSDだと普通に使えてそうに見える。やっぱり書き込み速度に引っ張られていたか・・・。

## メールクライアントを入れる
$ sudo apt-get install mutt
$ sudo snap install mailspring

## VisualStudio Code
https://code.visualstudio.com/
から.debファイルをダウンロード
$ sudo dpkg -i code_xxx-xxxx_amd64.deb

## Rust
$ sudo apt-get install curl $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

https://www.rust-lang.org/tools/install

これだけだとビルドでずっこけたのでclangを入れ直し

$ apt install clang lldb lld


## Golang

$ wget https://go.dev/dl/go1.20.4.linux-amd64.tar.gz
$ sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz
$ vim ~/.profile

下記の行を追加
export PATH=$PATH:/usr/local/go/bin

$ source ~/.profile

とりあえず今日はこんなところで。DAW関連も入れたけどそっちはとりあえずdebパッケージ落として入れただけなので割愛。

あとちょっとaptの件を調べたところ今の理解は下記の通り
- Ubuntu 14.04以降ではaptの仕様が奨励されている
- apt-getの方が制限が厳しくバージョンが固定されるため最新の物を入れたい場合はaptが良いらしい?

過去aptだと色々うまくいかない事が多くてaptは使うべきではないという状況だったと思うけど多分そこが改善されたって事ね。道理でapt-getでは最新になっているのに更新センターのダイアログがポコッと出たわけだ。apt update & upgradeでそれらの更新が行われたので間違いなさそう。ふむ。

あとはsnapはどういう扱いなのかも調べないとかな・・・。

2023年4月19日水曜日

Lubuntuが起動しなくなる

特にシステムの更新等もしていない中、某音楽アプリが固まってそのまま動かなくなったので強制再起動したら起動しなくなる。こういうところね・・・経験上デスクトップ環境としてLinuxを使っていると少なからずこういう唐突に起動しない事態に陥ることが他のWindows/Macと比較するとかなり高い確率である。(不思議とサーバ運用だとあまり経験が無い)いくらGUIがまともになってきてもこういう時にすっと修復できないものはPCとかに詳しくない人にはいくら動作が軽くてもオススメしたくない。そもそも、こういう状況が起きるべきではないけど。そのためにファイルシステムを工夫しているはずなのに・・・。Chromebookとかはもっとまともだと良いけど。

 

愚痴はさておき、起動時のログを見る限りNetworkManagerが起動できずにそのままシステムも起動できない状態になっている模様。別にネットワーク関連動かなくても起動自体はしてほしいところだけど・・・。

 

で、とりあえずシフトを押しながら起動してRecoveryモードで起動してみるけどネットワークを有効に出来ないので上書きで何かパッケージを入れ直すとか何も出来ない。正直何故NetworkManagerが起動しないのかさっぱり分からず取っ掛かりが何か欲しい所。なのでちょっと詳しく情報を追ってみる。NetworkManagerが駄目なのだけが分かっているのでそこに絞ってまずは調査。


$ journalctl -xe -u NetworkManager

 

この中で明らかに怪しい情報が見つかる。libgssapi_krb5.so.2に何かした記憶がないが恐らくは壊れているんでしょう

 

Apr 19 12:10:30 xxxxxxxx systemd[1]: Starting Network Manager...
Apr 19 12:10:30 xxxxxxxx NetworkManager[703]: /usr/sbin/NetworkManager: error while loading shared libraries: /lib/x86_64-linux-gnu/libgssapi_krb5.so.2: ELF file data encoding not little-endian
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Main process exited, code=exited, status=127/n/a
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Failed with result 'exit-code'.
Apr 19 12:10:30 xxxxxxxx systemd[1]: Failed to start Network Manager.
Apr 19 12:10:30 xxxxxxxx systemd[1]: NetworkManager.service: Scheduled restart job, restart counter is at 4.
Apr 19 12:10:30 xxxxxxxx systemd[1]: Stopped Network Manager.


という訳で破損確認と差替えを行いたい。が、前述の通りネットワークにつながらないので何か新しいファイルを拾ってきて比較等々の作業が難しい状況。どうしたものかと思ったけど今使っているlubuntuをインストールする際のUSBメモリをまだ消していなかった事を思い出してそちらから起動して確認してみることにする。このライブラリの所在を確認しバイナリ比較。

 

$ cmp /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

/media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 differ: byte 6, line 1


案の定差分が出てくる。一応念の為詳細確認をする為に"-bl"オプションをつけてみる


$ cmp -bl /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

<snip>
338550   0 ^@    10 ^H
338553 340 M-`   64 4
338554   1 ^A     0 ^@
338569  40        4 ^D
338581   0 ^@    10 ^H
338585  22 ^R     1 ^A
338586   1 ^A     0 ^@
338587   0 ^@    20 ^P
338589   1 ^A     3 ^C
338606   0 ^@   100 @
338609   0 ^@    64 4
338617  64 4     37 ^_
338618   0 ^@     1 ^A
338625   0 ^@    10 ^H
<snip>


見た所で何がどう違うのかはこれだけだと分からないけど結構差があることは分かった。次のステップとして起動するメディアのこのライブラリを起動しないファイルシステム側にコピーしてみます。


$ sudo mv /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2.bak
$ sudo cp /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2 /media/xxxxxx/usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2.2

で起動しないメディアから再起動。結果としてはこれだけで普通に起動しました。壊れたのがこの1ファイルだけかは分からないけど少なくとも起動に関わるところはこれだけだったという事なのでしょう。なんとか復活しました。


本当は何故、どう壊れたのか、他に壊れたものは無いのかは把握しておきたいところではあるけど・・・どう調査すべきなんだろうなこういうのって。普段使いがUNIXな人たちってどうしているんだろうか。

2023年2月15日水曜日

Lubuntuで日本語入力を行う為の設定(トラブルシューティング)

ちょっとPCのSSDがぶっ飛んだのをきっかけでUSBメモリにLubuntuを入れて起動させたものの色々問題が起きていた一つがこの日本語の問題。

 

色々なサイトで解決方法として下記の事を書いているんだけど書いてある内容だけで完全な解決にならなかったので一応メモを書いておく。


他のページに書かれている内容

localeを日本語にしていてもfcitx + mozcが最初から入っていない問題の解決

$ sudo apt install fcitx-mozc

 

日本語フォントが入っていない問題の解決
$ sudo apt install fonts-ipafont fonts-ipaexfont fonts-takao fonts-vlgothic

 

そもそも日本語の環境が出来ていない場合の解決 
$ sudo apt install language-pack-ja
 
大抵はこれをやってサービスの再起動かログオフログインすれば使えるとか書いているが少なくとも手元の環境ではもう1ステップ必要だった。Lubuntu使うの初めてで設定やUI分かっていなかったのでまぁあえて書く話ではないのかもしれないが

追加でやる必要があるかもしれない内容 

右下にキーボードのアイコンがあるので右クリックをしてConfigureを選択 
 
 
おそらくはControl+Spaceや半角キーで日本語を入力できない場合はこのように日本語のキーボードが一つしかない状態のはず。 
 
 

なので左下の+ボタンを押して手作業で追加をしてやる必要がある

ここでポイントはLocaleの設定次第ではリストにmozcが出てこないので"Only show Current Language"を必要に応じて外してMozcを探すこと。個人的に日本語LocaleでLinuxを使うとコンソールとかから突くときに色々問題が起きたりして好きじゃないので英語でインストールをしたのでここでハマったのかなと思います。

 

最終的にこういう風になればok。これでCtl+Spaceでこの2つの切り替えが行われる様になるはず


以上でおそらくは日本語が入力できるようになったはず。

 

さて、次は音がスピーカーから鳴らない(でも何故かイヤホン端子からは鳴る)問題かな