web-dev-qa-db-ja.com

FreeBSD / TrueOS / DragonFlyBSDなどに/ etc / machine-idがありません

" FeeBSDKDE。d-busを起動できませんでした。qdbusを呼び出すことができますか? ":

私はFreeBSD/TrueOS/DragonFly BSDを使用しており、実行時に/etc/machine-idファイルの欠落について文句を言うPortsのソフトウェアをいくつか持っています。 /etcにそのようなファイルはありません。

このファイルは何ですか?私はそれを持っているべきですか?はいの場合、どうすれば作成できますか?

2
JdeBP

/etc/machine-idファイルは、BSDの標準部分ではありません。これは、Portsにあるソフトウェアに漏れ始めたsystemd-ismです。通常、このファイルがないことは問題ありません。これは、(これまでのところ)ほとんどのそのようなソフトウェアが頼りにしている古い非systemd固有のメカニズムがまだあるためです。

ソフトウェアはここでマシンIDを探します。これは、オペレーティングシステムのこのインストールを一意に識別する128ビットの数値であり、システムの再起動後も一貫して(ほとんど)独立しています。ハードウェアの変更から。

そのようなソフトウェアの1つがD-Busです。これにもマシンIDの概念があります。歴史的に、FreeBSD/TrueOS/DragonFly BSDでは、これは/var/db/dbus/machine-idファイルで見つかりました。 D-Busは近年、好みに応じて/etc/machine-idを見るように変更されていますが、それでも古いファイルを見るようにフォールバックする必要があります。

オペレーティングシステムには、このようなファイルが付属していないか、すぐに作成することはできません。しかし、もちろんあなたはそれを作ることができます。

  • を取得してインストールします noshツールセット そしてスーパーユーザーとしてsetup-machine-idツールを実行します。これにより、/etc/machine-idが作成され、可能であればD-Busファイルから既存のIDが読み取られます。 (ここでのバグを回避するには、ツールキットのバージョン1.36以降を使用してください。)

    一度作成されると/etc/machine-idファイルはシステムの存続期間中そこにあるだけなので、これをすべてのブートストラップで実行する必要はありません。ただし、システムブートストラップに接続すると、/run/machine-idファイルとkern.hostuuidカーネル変数がすべてこの同じIDを含むようになります。また、/etc/hostidを使用/更新します。

  • D-Busファイルをsystemdの場所に移動し、前者を後者にシンボリックリンクします:
    mv -i/var/db/dbus/machine-id/etc/&& ln -s/etc/machine-id/var/db/dbus /
    シンボリックリンクを他の方向に作成すると、/etc/machine-idがマウントされる前に/varが使用可能であると期待するソフ​​トウェアが破損することに注意してください。繰り返しますが、これらはこのファイルのsystemdセマンティクスであり、Portsにあるソフトウェアに忍び寄る可能性があります。
  • uuidgen(出力をマッサージする必要があります)またはdbus-uuidgenのようなものによって生成された新しいマシンIDを使用して手作業で作成するだけです。すでにD-Busがインストールされていて、D-BusマシンIDファイルが存在する場合、これは劣ったアプローチです。これは、(最初​​に)systemdの場所を検索するソフトウェアが、(最初に)ソフトウェアとは異なるマシンIDを確認するためです。 D-Busの場所を見てください。

はい、厳密に言えば、これはBSDの規則に従って/usr/local/etc/machine-idである必要がありますが、そもそも/etc/machine-idを見ているソフトウェアについて話していることを忘れないでください誤ってsystemd固有であるため。このファイルのsystemd以外の場所を調べるためのパッチも適用されていません。

参考文献

3
JdeBP