この記事は openSUSE Advent Calendar 2022 の4日目です。

systemd が使われるようになると、daemon の制御とかのやり方は大きく変わりました。/etc/init.d にあるスクリプトから、systemd パッケージに含まれるコマンドを使うようになってきました。それらのコマンドは、xxxxxctl という、末尾に ctl が含まれるものが多いように感じました。そこで、/usr/bin/ の中にある、末尾が ctl なプログラムがどんなものかを簡単に調べて見ることにしました。

今回は、busctl を紹介します。

コマンド名: busctl
パッケージ: systemd-249.12-150400.8.13.1.x86_64
動作: ○

詳細:
busctl は、D-Bus の状態を表示させたり、設定を行ったりするためのツールです。取りあえず起動してみると、

NAME                                  PID PROCESS         USER    CONNECTION    UNIT                          SESSION DESCRIPTION
:1.0                                    1 systemd         root    :1.0          init.scope                    -       -
:1.1                                  632 wickedd-dhcp6   root    :1.1          wickedd-dhcp6.service         -       -
:1.10                                 705 wickedd-nanny   root    :1.10         wickedd-nanny.service         -       -
:1.105                               3249 busctl          ribbon  :1.105        session-4.scope               4       -
:1.13                                 720 ModemManager    root    :1.13         ModemManager.service          -       -
:1.16                                1120 gdm             root    :1.16         display-manager.service       -       -
:1.17                                1128 accounts-daemon root    :1.17         accounts-daemon.service       -       -
:1.2                                  618 avahi-daemon    avahi   :1.2          avahi-daemon.service          -       -
:1.24                                1275 power-profiles- root    :1.24         power-profiles-daemon.service -       -
:1.26                                1280 rtkit-daemon    root    :1.26         rtkit-daemon.service          -       -
:1.27                                1274 upowerd         root    :1.27         upower.service                -       -
:1.3                                  628 wickedd-auto4   root    :1.3          wickedd-auto4.service         -       -
:1.32                                1324 wpa_supplicant  root    :1.32         wpa_supplicant.service        -       -
:1.4                                  630 wickedd-dhcp4   root    :1.4          wickedd-dhcp4.service         -       -
:1.45                                1437 colord          colord  :1.45         colord.service                -       -

のように、現在のバスの一覧が表示されます。とは言っても、D-bus がどういう物で、何をしているかを分かっていないと、この表示の意味も分かりませんね。Wikipedia先生に聞いてみると、

D-Bus(Desktop Bus、ディーバス)は、メッセージバスと呼ばれる、アプリケーション間でやりとりを行うための、プロセス間通信 (IPC) 実装の1つである。

なのだそうです。
Unix系のプロセス間通信としては、パイプ、シグナル、ソケットとかいろいろありました。また、KDE や Gnome も独自のプロセス間通信機能を持っていました。それらの乱立を統一化するために作られたのが D-Bus ということになります。
ただ、D-Bus そのものは、ユーザが直接さわる物ではありません。あくまでもプロセス(プログラム)の世界で使われるものです。そのため、busctl も、D-Bus の動作の確認やデバッグ、テスト用に使われるものと思った方がよいでしょう。

前回は D でしたが、今回は Q です。Qt関連のパッケージが多く存在していました。

パッケージ名 qdirstat
バージョン qdirstat-1.7-1.6.x86_64
動作 ◎
詳細
グラフィカルにディスクの使用量を見たり、ファイルやディレクトリの操作をするツールです。Qt ベースで動きます。見栄えはかなり良いです。

面白いのは、下部に表示されている図で、これは、各ファイルの大きさをベースにしたイメージです。例えば、ある大きな模様の所をクリックすると、そのイメージに対応するファイルに移動することが出来ます。

さらに、右クリックで種々の操作を選ぶことも出来ます。

qdirstat は、ディレクトリを渡りながら、ディスクの掃除をするときなどに便利に使えそうです。

ODC 2020 online 参加しました

By Syuta Hashimoto @ 2020-12-21 01:00

12/19(土)に開催された、ODC 2020 onlineに参加してきました。

Cross Distro Developers Camp

今回は、ディストリビューション横断で日本語入力の課題などを解決しようと結成されたチーム、Cross Distro Developers Campで参加してきました。


Linuxディストリビューション大集合 〜あなたのLinuxディストリビューションを見つけてみよう〜

ディストリビューションとはなんぞや?から、openSUSE、Debian、Solusの各ディストリビューションの紹介を行いました。

openSUSEは武山さんが紹介してくださいました。

Debianさんなど、あらためて説明を聞くと、特色や方向性が理解できて面白かったです。開発体制なんかも普段は目にすることがないので、興味深かったです。

Solusさんからは、日本語入力関連のパッケージの開発にまつわる、難題のお話も・・・・

休憩時間・雑談タイム

次のコマがミーティングだったので、間で雑談を。

参加者からは話題の?Centos8の事や、ターミナルでの日本語表示に関する問題などが出てました。

データの形式と、それを表示するソリューション(ターミナル)は独立しているべきですけど、ソリューション側で対応すると、それぞれのソリューションで日本語対応しなければならないことに・・

Linuxディストリビューション開発談話

openSUSEから武山さん、Debianから杉本さんがメインパネラーとして、あとはSolusのPG_MANAさん、ひよこLinux(?)の羽鳥さん、opencoconの島田さんにオブザーバーとして参加して頂いて、ディストリビューション開発について談話しました。

結構、ディストリビューション開発って(ソフトウェアもですが)敷居高いイメージありましたが、もちろん世界でどなたかが実際に開発しているわけで、方法もノウハウもあるわけですよね。

日本のコミュニティがそういった情報を持っているし、世界とのコネクションもあるので、まぁアクセスしてよ、とおっしゃってました。

私も来年はパッケージ開発何かしたいなぁ。

ブース

終日、JitsiをOSPNからお借りしてブース展示をしていました。私は主にこのブースの管理をしていました。

関係者の方?が多く入ってくださって、openSUSEユーザ会のRibbonさんとは、最近MLで話題になってた日本語manの話とかを聞けました。あとはみなさんと近況を連絡しあったり、と、普段はオフラインで開催している時にやってた情報交換ができた感じでよかったです。

新しい方はちょっと入りにくかったですかね・・私も無理に声掛けとかしなかったのですが、もうちょっと配慮してもよかったかもしれません。反省。そのあたり、東海道LUGの島田さんが上手にアプローチしてくださっていて、さすがだなぁと思いました。(島田さんには、セミナーのディストロとは?の所をお話して頂きまして、それもあってブースに来てくださってました。)

感想

セミナー・ミーティングは、Zoom 30人強、YouTube 40人弱で70人前後の方が見てくださってました。ありがとうございます。

openSUSEに興味持たれたら、ぜひアクセスしてください!

Cross Distro Developers Campとしては、次回活動は2021年1/31日(日)にもくもく会(オンライン)を予定しています。

openSUSE Leap 15.2 で venv が落ちる

By ftake @ 2020-12-19 22:47

開発環境である日突然 venv が使えなくなり、はまりました。先日のアップデートで配信された python3-base-3.6.12-lp152.4.9.1 に不具合があり、起動できなくなりました。
https://bugzilla.opensuse.org/show_bug.cgi?id=1179756

# python3 -m venv venv
Error: Command '['/home/geeko/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned
non-zero exit status 1.

ensurepip を動かしてみると、

# python3 -Im ensurepip --upgrade --default-pip
Traceback (most recent call last):
File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/lib64/python3.6/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/usr/lib64/python3.6/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/usr/lib64/python3.6/ensurepip/__init__.py", line 99, in _bootstrap
"_bundled/{}".format(wheel_name),
File "/usr/lib64/python3.6/pkgutil.py", line 634, in get_data
return loader.get_data(resource_name)
File "<frozen importlib._bootstrap_external>", line 832, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib64/python3.6/ensurepip/_bundled/setuptools-
40.6.2-py2.py3-none-any.whl'

実際にあるのは…

/usr/lib64/python3.6/ensurepip/_bundled/setuptools-44.1.1-py2.py3-none-any.whl

当面はバージョンを1つ戻すか、修正が配信されるのを待ちましょう。

起動するkubeletのバージョンを上げる

By Syuta Hashimoto @ 2020-12-17 01:00

私はKubicでKubernetesを構築しているのですが、Kuibcをアップデートしてkubeletのバージョンが1.19に上がったはずなのにもかかわらず、kubectl get nodeでずっとバージョンが1.18となっていて悩んでいました。

結論

/etc/sysconfig/kubelet に設定されている KUBELET_VERを、1.18から1.19に変更する

調査

パッケージを確認

まず、パッケージがなんのバージョンが入っているかを確認します。

kubic1-host:~ # zypper se kubelet

S  | Name                          | Summary                   | Type
—+——————————-+—————————+——–
i  | kubernetes-kubelet            | Kubernetes kubelet daemon | package
i  | kubernetes1.17-kubelet        | Kubernetes kubelet daemon | package
  | kubernetes1.17-kubelet-common | Kubernetes kubelet daemon | package
i  | kubernetes1.18-kubelet        | Kubernetes kubelet daemon | package
i  | kubernetes1.18-kubelet-common | Kubernetes kubelet daemon | package
i+ | kubernetes1.19-kubelet        | Kubernetes kubelet daemon | package
  | kubernetes1.19-kubelet-common | Kubernetes kubelet daemon | package
  | kubernetes1.20-kubelet        | Kubernetes kubelet daemon | package
  | kubernetes1.20-kubelet-common | Kubernetes kubelet daemon | package

 どうやら、1.17、1.18、1.19、と、いろいろなバージョンが入ってるようです。

今見たら、1.20も入ってますね。

使ってるバイナリを確認

kubic1-host:~ # type kubelet

kubelet is hashed (/usr/bin/kubelet)

ふむふむ。/usr/bin/kubelet、ですね。

こういう実行ファイルはスクリプトの場合があったりするので、種別を調べてみます。

kubic1-host:~ # file /usr/bin/kubelet
/usr/bin/kubelet: POSIX shell script, ASCII text executable

なるほど、スクリプトっぽいですね。

中身を確認します。

kubic1-host:~ # cat /usr/bin/kubelet
#!/bin/sh
# Loader Script for Multi-Version Kubelet arrangement introduced to openSUSE in March 2020
source /etc/sysconfig/kubelet

if [ -z “$KUBELET_VER” ]       
then
  echo “ERROR: KUBELET_VER= not defined in /etc/sysconfig/kubelet”
  exit 1
else
  /usr/bin/kubelet$KUBELET_VER “$@”
fi

どうやら、/etc/sysconfig/kubeletの値を参照しているようです。こちらを確認してみます。

kubic1-host:~ # cat /etc/sysconfig/kubelet
KUBELET_VER=1.19
KUBELET_EXTRA_ARGS=”–container-runtime=remote –container-runtime-endpoint=unix:///var/run/crio/crio.sock –runtime-request-timeout=15m –c
group-driver=systemd -v=2 –runtime-cgroups=/systemd/system.slice –kubelet-cgroups=/systemd/system.slice”

なるほど、KUBELET_VERが定義されています。nodeのバージョンが低いときは、ここが1.18となっていましたので、それを1.19に更新しました。

それからKubernetesを起動すると、見事バージョンが1.19にあがってました。

今なら1.20に上がる予感・・・・

メーリングリスト

最近忙しいこともあって、なかなかメーリングリストなどの情報源にあたれず・・・もしかしたら、こういったことはとうに情報共有されていたのかもしれません。また、この設定がKubic独自なのか、一般的なのか、といったことも追いきれておらず。追って調査したいと思います。

そもそもの使い方

アップデートで使い続けるのではなく、折を見て最新プリメイドイメージに乗り換えていく運用が今っぽいのかも・・・・・

openSUSE Advent Calender の 16日目です。今日は小ネタです。

スマートフォンを通してインターネットに接続するテザリングをするとき、一般的には Wi-Fi を使ってスマートフォンと PC を接続することが多いのではないかと思います。

実はUSBケーブルで接続してテザリングをすることもできます。充電・電源供給しながら使用することができるので、長時間使うときには便利です。

Android のスマートフォンであれば、どの機種でも簡単にできます。USB ケーブルで接続し、スマートフォン側のネットワークの設定で USB テザリングを有効にすれば、特にパッケージ等のインストールをすることなくつながります。

Network Manager では、1番目に Type-C で接続した有線LANアダプタがあるため、スマートフォンは「Wired connection 2」として設定されました。

この記事は openSUSE Advent Calendar の 20日目です。完走も見えてきました。

さて、今日は Twitter などでときどき質問が飛ぶ Google Chrome のインストール方法です。

openSUSE では Google Chrome の OSS 版である Chromium がパッケージとして提供されています。普通のウェブサイトを見る分にはこれでよいのですが、Flash Player が必須なウェブサイトや、DRM で保護された不自由なコンテンツを見るために、ときどき Chrome が欲しくなるときがあります。

それでは、インストール方法です。

(1) Google のリポジトリのGPG 公開鍵のインポート

Chrome のパッケージを署名している鍵の公開鍵をインポートします。この手順を飛ばすとパッケージの署名チェックでエラーになってしまいます。

wget https://dl.google.com/linux/linux_signing_key.pub
sudo rpm --import linux_signing_key.pub

こちらのページにも手順が書かれています:
https://www.google.com/linuxrepositories/

(2) Chrome をダウンロードする

ブラウザで Linux 用の Chrome のrpmファイル(Fedora/openSUSE用)をダウンロードします。

https://www.google.com/chrome/

※Windows などからダウンロードする場合は、画面の下部に「他のプラットフォーム」というリンクから Linux 版のダウンロード画面にたどり着けます。

(3) セットアップを実行する

ダウンロードした rpmファイルを zypper でインストールします。

cd ダウンロード
sudo zypper in ./google-chrome-stable_current_x86_64.rpm

おわりに

以上、Chrome のインストール方法でした。Amazon Prime などの動画配信サイトが見られないといったような場合は、Chrome を試してみて下さい。

明日は「openSUSEでディスクの健康状態を取得」です。