無人アップグレードでは、ホスト名ではなくマシンを「localhost」と呼びます

無人アップグレードでは、ホスト名ではなくマシンを「localhost」と呼びます

私のマシンの一部では、無人アップグレードによって再起動が必要であることを通知するメールが送信され、次のように表示されます。

[reboot required] unattended-upgrades result for localhost: SUCCESS

一方、他の環境では、localhost ではなく正しいホスト名が指定されます。ホスト名を正しく指定するには、どこでこれを変更すればよいでしょうか?

答え1

私の知る限り、では127.0.0.1または が使用されています。::1/etc/hosts

次のような行:

127.0.0.1  server.yourdomain.xx server localhost
::1 server.yourdomain.xx server localhost ip6-localhost ip6-loopback

server.yourdomain.xx
Debianテストでテストされたというメッセージを出力します

答え2

/usr/bin/unattended-upgrade私たちのシステムでは、python3 スクリプトがホスト名を把握する方法の違いが原因と思われます。

一部のマシン (Ubuntu 18.04) では次のようになります:

import os

#...

def host():
    # type: () -> str
    return os.uname()[1]

...一方、新しいマシン (Ubuntu 22.04) では次のようになります:

import socket

#...

def host():
    # type: () -> str
    return socket.getfqdn()

後者のバージョンはhost()単純に返される"localhost"ので、socket.getfqdn()引数なしの場合

このunattended-upgrade脚本の変更は紹介されたバージョン間1.3そして1.4

このプルリクエストにはすでにいくつかの議論が含まれています観察された回帰を導入することについてlocalhost、また実際に機能する回避策についても示唆しています。

/etc/hosts次のように目的のホスト名をリストする代わりに、

127.0.0.1 localhost
127.0.0.1       my-hostname

... 次のようにリストします:

127.0.0.1 localhost
127.0.1.1       my-hostname

...今必要なのは、なぜ127.0.1.1の代わりにを使用すると127.0.0.1、これが機能します...

https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_hostname_resolution確かに、解決策の正しさに対するさらなる信頼性を高めるのに役立ちますが、私にとっては、関連するメカニズムと根拠に関する十分な背景情報がまだ提供されていません。

(1)のマニュアルページにはhostnameFQDNに関するセクションがある。名前解決の複雑さを理解するのに役立ちます:

FQDNを設定するための推奨方法は、、DNS、またはNISを使用して、ホスト名を完全修飾名の別名にすることです/etc/hosts。たとえば、ホスト名が「」の場合、次のようなursula行があります。/etc/hosts

127.0.1.1 ursula.example.com ursula

技術的には、FQDN は(2)getaddrinfoによって返されたホスト名に対して (3) が返す名前ですgethostname。DNS ドメイン名は最初のドットの後の部分です。

/etc/host.confしたがって、変更方法はリゾルバの設定(通常は )によって異なります。通常、hosts ファイルは DNS または NIS の前に解析されるため、 で FQDN を変更するのが最も一般的です/etc/hosts

答え3

関連するファイルの内容を変更します。etc/mailname:

Debianのポリシーでは:

パッケージが、(たとえば) ローカルで生成される送信ニュースやメール メッセージで使用するホスト名を知る必要がある場合は、ファイルを使用する必要があります/etc/mailname。このファイルには、マシン上のユーザーの電子メール アドレスのユーザー名と @ (アット) 記号の後の部分 (改行が続く) が含まれます。

通常、それはFQDN名(長さ他のシステムによって解決されるサーバーのホスト名またはIPアドレス(名前)です。

簡単にするために、関連するパッケージを再設定するだけです。Debian 10のデフォルトエキシム4パッケージは実際にはexim4-config:

dpkg-reconfigure -pcritical exim4-config

-pcritical質問がほとんど行われないことを保証します。これを省略するか、または下げて、-plowこれらの質問の一部またはすべてを表示することができます。

OPは使用していないのでエキシム4しかしmsmtpこの場合、構成は次のようにトリガーできます。

dpkg-reconfigure msmtp

Create a system wide configuration file?これまでにこれを行ったことがない場合は、フォローアップの質問に進むために、最初の質問 ( ) の答えが「はい」であることが重要です。

また、エキシム4、設定スクリプト ( にインストールされると/var/lib/dpkg/info/msmtp.config) は をチェックしない/etc/mailnameため、推奨される Debian ポリシーに従っていません。

関連情報