RHELの『よくわからないサービス』を調べる

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

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。