Red Hatの森若です。
今回はRHELで『よくわからないサービス』が動作しているときに、調べる方法を見てみます。
謎(?)のサービス
systemctl -t service
のようなコマンドを使うと、そのシステムでのサービス一覧を見ることができます。
$ systemctl -t servce (中略) osbuild-composer.service loaded active running OSBuild Composer osbuild-dnf-json.service loaded active running OSbuild dnf-json service osbuild-worker@1.service loaded active running OSBuild Composer Worker (1) (以下略)
この記事では、馴染みがないサービスを見つけた時の調べ方をみていきます。
今回は例としてこの osbuild-composer.service
が何をするためのサービスか調べてみます。
サービスの設定を見る
systemdのサービスから対応する設定(unitファイル)を見るには、systemctl cat
コマンドを使います。
サービスによってはunitファイル内にDescriptionやDocumentationが定義されていて何なのかが記載されていたり、
ドキュメントへのリンクを見つけたりできます。
unitファイルを表示させてみましょう。 # ではじまる行は設定ファイル名または設定ファイル中のコメントです。
$ systemctl cat osbuild-composer.service # /usr/lib/systemd/system/osbuild-composer.service [Unit] Description=OSBuild Composer Requires=osbuild-dnf-json.socket After=network.target (中略) ExecStart=/usr/libexec/osbuild-composer/osbuild-composer (以下略)
Descriptionは"OSBuild Composer"ということで特に追加の情報はありませんでした。 Documentationは記載がありませんでした。 ExecStart はサービスを起動するためのコマンドです。これも osbuild-composer という名前で追加の 情報はありませんでした。
"OSBuild Composer"が正式名称のようなのでこの名前でGoogle検索する方法もありますが、もう少し粘ってみます。
rpmパッケージを探す
前のステップでサービスに対応するunitファイルや、実行ファイルの名前がわかりました。
あるファイルに対して、どのrpmパッケージに含まれているかを探すには rpm -qf
コマンドを使います。
rpmパッケージに含まれていないファイル場合はその旨が表示されます。
これらのファイルを提供しているrpmパッケージを探してみましょう。
$ rpm -qf /usr/lib/systemd/system/osbuild-composer.service osbuild-composer-46.3-1.el9_0.x86_64 $ rpm -qf /usr/libexec/osbuild-composer/osbuild-composer osbuild-composer-core-46.3-1.el9_0.x86_64
これらのファイルはrpmパッケージでインストールされたもののようで、対応するパッケージ名が表示されました。
rpmパッケージにはファイルだけでなく各種のメタデータが含まれていて、システムへインストールしたrpmパッケージのメタデータをあとで表示・検索できます。
rpmパッケージの概要を表示するには rpm -qi
コマンドを使います。
$ rpm -qi osbuild-composer osbuild-composer-core Name : osbuild-composer Version : 46.3 Release : 1.el9_0 Architecture: x86_64 Install Date: Thu 19 May 2022 08:44:15 PM JST Group : Unspecified Size : 17645 License : ASL 2.0 Signature : RSA/SHA256, Sun 01 May 2022 12:33:21 AM JST, Key ID 199e2f91fd431d51 Source RPM : osbuild-composer-46.3-1.el9_0.src.rpm Build Date : Fri 29 Apr 2022 03:25:01 AM JST Build Host : x86-vm-55.build.eng.bos.redhat.com Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : https://github.com/osbuild/osbuild-composer Summary : An image building service based on osbuild Description : A service for building customized OS artifacts, such as VM images and OSTree commits, that uses osbuild under the hood. Besides building images for local usage, it can also upload images directly to cloud. It is compatible with composer-cli and cockpit-composer clients. (以下略)
Description を機械翻訳してみます。
VMイメージやOSTreeコミットなど、カスタマイズされたOSアーティファクトを 構築するためのサービスで、osbuildを基盤としています。ローカルで使用する イメージの構築のほか、クラウドに直接アップロードすることも可能です。 composer-cli、cockpit-composerクライアントと互換性があります。
どうやらosbuild-composerは仮想マシンイメージなどを作るためのサービスのようです。
URLの欄にアップストリームプロジェクトへのリンクがあります。 パッケージによってはリンク切れになっている場合もあるのですが、今回は到達できました。 github.com ここから詳しい説明が得られそうです。
rpmパッケージ内のドキュメントを探す
URLに到達できない場合もありますから、もう少しRHELの中で調べる方法を見ていきます。
rpmパッケージ内にはドキュメントが含まれているかもしれません。 rpm -qd
コマンドでパッケージ内のドキュメント一覧を表示します。
$ rpm -qd osbuild-composer osbuild-composer-core /usr/share/doc/osbuild-composer/README.md /usr/share/man/man7/osbuild-composer.7.gz
2つのファイルが見つかりました。読んでみると、README.mdはさきほどのgithubにあるREADME.mdで、man 7 osbuild-composerは概要説明になっていました。
$ less /usr/share/doc/osbuild-composer/README.md $ man 7 osbuild-composer
関連パッケージを探す
ドキュメントが実行ファイルとは別のパッケージとして提供されていて、上記の方法では見つからない場合もあります。
パッケージ名の先頭の単語 (今回の例ではosbuild
) をキーワードにして検索すると、関連するパッケージを探すことができます。
何か手がかりがあるかもしれません。
yum search
コマンドで関連パッケージを検索してみます。
この検索ではシステムにインストールされていないrpmパッケージも表示されます。
$ sudo yum search osbuild Updating Subscription Management repositories. Last metadata expiration check: 0:09:23 ago on Thu 28 Jul 2022 02:30:28 AM JST. ======================================== Name Exactly Matched: osbuild ========================================= osbuild.noarch : A build system for OS images ======================================= Name & Summary Matched: osbuild ======================================== osbuild-composer.x86_64 : An image building service based on osbuild osbuild-composer-core.x86_64 : The core osbuild-composer binary osbuild-composer-dnf-json.x86_64 : The dnf-json binary used by osbuild-composer and the workers osbuild-composer-worker.x86_64 : The worker for osbuild-composer ============================================ Name Matched: osbuild ============================================= osbuild-luks2.noarch : LUKS2 support osbuild-lvm2.noarch : LVM2 support osbuild-ostree.noarch : OSTree support osbuild-selinux.noarch : SELinux policies python3-osbuild.noarch : A build system for OS images =========================================== Summary Matched: osbuild =========================================== weldr-client.x86_64 : Command line utility to control osbuild-composer