무인 업그레이드는 내 컴퓨터를 호스트 이름 대신 "localhost"라고 부릅니다.

무인 업그레이드는 내 컴퓨터를 호스트 이름 대신 "localhost"라고 부릅니다.

내 컴퓨터 중 일부에서는 무인 업그레이드가 재부팅이 필요하다는 이메일을 보내며 다음과 같이 말합니다.

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

다른 경우에는 localhost 대신 올바른 호스트 이름을 지정합니다. 호스트 이름을 올바르게 지정하려면 이것을 어디에서 변경할 수 있습니까?

답변1

내가 알 수 있는 한, 이는 127.0.0.1또는 ::1in 을 사용합니다 /etc/hosts.

다음과 같은 줄:

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

server.yourdomain.xx
Tested on 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_solution솔루션의 정확성에 대한 추가 신뢰성을 제공하는 데 도움이 되지만 나에게는 여전히 관련된 메커니즘과 이론적 근거에 대한 충분한 배경을 제공하지 못합니다.

(1) 맨페이지에는 hostnameFQDN에 대한 섹션이 있습니다.이는 이름 확인의 복잡성을 파악하는 데 도움이 됩니다.

/etc/hostsFQDN을 설정하는 권장 방법은 , DNS 또는 NIS를 사용하여 호스트 이름을 정규화된 이름의 별칭으로 만드는 것입니다 . 예를 들어, 호스트 이름이 " ursula" 인 경우 다음을 /etc/hosts읽는 행이 있을 수 있습니다.

127.0.1.1 ursula.example.com ursula

getaddrinfo기술적으로: FQDN은 (2) 에서 반환된 호스트 이름에 대해 반환된 이름(3)입니다 gethostname. DNS 도메인 이름은 첫 번째 점 다음 부분입니다.

/etc/host.conf따라서 변경 방법은 확인자(일반적으로 )의 구성에 따라 달라집니다 . 일반적으로 호스트 파일은 DNS 또는 NIS보다 먼저 구문 분석되므로 /etc/hosts.

답변3

관련 파일의 내용을 변경합니다.etc/mailname:

데비안 정책에 따르면:

패키지가 로컬에서 생성되는 나가는 뉴스 및 메일 메시지에 사용할 호스트 이름을 알아야 하는 경우 파일을 사용해야 합니다 /etc/mailname. 여기에는 시스템 사용자의 이메일 주소에 대한 사용자 이름 및 @(at) 기호 뒤의 부분이 포함됩니다(뒤에 줄바꿈이 옵니다).

일반적으로 이는 FQDN 이름입니다(이름)은 다른 시스템에서 확인된 서버의 이름입니다.

작업을 간단하게 하려면 관련 패키지를 재구성하면 됩니다. 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 정책을 따르지 않습니다.

관련 정보