为什么我获得主机名:名称或服务未知错误?


23

通过apt-get以下方式安装任何软件包时,都会出现此错误:

hostname: Name or service not known
dpkg: error processing ssmtp (--configure):
 subprocess installed post-installation script returned error exit status 1
Setting up libt1-5 (5.1.2-3.4ubuntu1) ...
Setting up php5-gd (5.3.10-1ubuntu3.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Errors were encountered while processing:
 ssmtp
E: Sub-process /usr/bin/dpkg returned an error code (1)

为什么会这样呢?


我遇到了同样的问题,该问题与DNS不能为主机名提供任何帮助有关,因此FQDN不可用。

Answers:


10

解:

(这些类型的问题没有好的解决方案。但是只有一些令人生厌的问题)

您应该首先在终端中尝试以下命令:

sudo apt-get -f install

如果不起作用,请使用含糊的解决方案进行处理。

尝试暂时移动的配置脚本ssmtp

  1. 打开终端并执行此命令以将其移动到当前目录

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. 然后尝试使用 apt-get

问题原因:

先前的安装或删除可能未成功完成,因此需要对ssmtp软件包进行一些配置步骤。由于dpkg必须先完成步骤apt-get才能继续进行,因此后续使用now会卡在该步骤上。


18

hostname --fqdn

如果出现错误,请使用正确的主机名编辑/ etc / hostname和/ etc / hosts。

然后aptitude install ssmtp再次安装它。


13

所有人都知道,/ etc / hosts的编辑可以使server.exmaple.com的etc / hostname正确无误

但是主机不正确

127.0.0.1 localhost
127.0.0.1 server

更改为此:

127.0.0.1 localhost.localdomain  localhost
192.168.xxx.xxx  server.example.com   server

我运行了主机名-f和主机名--fqdn并得到了以下内容。

server.example.com

只是以为每个人都想知道。


5

您的互联网连接很可能无法正常工作。具体来说,我认为您的DNS无法正确解析。

尝试添加线

nameserver 80.80.80.80 

给你 /etc/resolv.conf

这将临时添加freenom DNS服务器(直到下次启动)


那是一个生成的文件。我该如何管理?
chovy

@chovy如果您仍然对此感到疑惑,可以安全地继续操作并sudoedit /etc/resolv.conf替换存在的任何地址,8.8.8.8以解决临时DNS问题。该文件将在下次启动时重新生成,因此除非无法重新启动,否则您在此处无法做任何灾难性的工作
-Zanna

2

我已经在Ubuntu系统上的家庭网络上收到了该消息,该消息是通过动态分配IP地址的路由器提供的,该路由器为网络提供了DHCP和DNS组合服务器。

消息:hostname: Name or service not known可能是由于此类设备故障(即使只是瞬间)而引起的。

例如,如果断电后重新启动家庭路由器,则会发生这种情况。

这里的问题是您的网络所依赖的DHCP服务会忘记它已分配的所有IP地址和关联的域名。当您的计算机检查关联的dns服务器的名称时,该服务器将不再具有该名称。某些DHCP服务器可以通过将对磁盘或闪存所做的分配写入磁盘或闪存来避免问题,因此重新启动时不会丢失任何内容。


服务器通常可以把你的计算机名从你的系统的DHCP请求,使计算机名在其记录中。本地和商店,使得它在同时与其相关的DNS服务器可用。通常hostname -fqdn,您会从您的DNS服务器通过网络请求完整域名,如果有记录,它将返回该名称。该.local后缀使它看起来像一个有效的完全限定域名(虽然它是不是真的有效的全球域名)。这就是为什么您不必在/ etc / hosts或/ etc / hostname文件中手动指定域名的原因。


重新启动DHCP服务器可能会导致其他问题,因为IP地址可能同时分配给多台计算机,从而导致某些计算机无法通信。服务器重新启动之前,地址分配一次,之后重新分配。

如果您的DHCP服务器忘记了分配,安全的做法是在重新启动时重新连接其服务的每台计算机。当我迷路时,我只是断开连接并重新连接到我的wifi接入点。在有线网络上,您可以使用ifdown和(ifup或)简单地断开并重新连接网络电缆。重新连接系统时,系统会自动使用dhclient获取新地址-我的计算机和服务器现在同意我是谁,并且不再显示该消息。

如果等待足够长的时间,DHCP租约将超时,系统将要求从服务器获取新的租约,从而解决了问题。可能要过几个小时或几天(对于我的服务器是一天)。

如果您定义了静态IP名称和地址,并且DNS反向查找记录正确,则不会出现此问题。


1

今天早上我遇到了这个错误,结果发现主机名拼写错误/etc/hostname。更正此错误,使其与主机名拼写一致,/etc/hosts从而解决了该问题。的hostname -b -F /etc/hostname命令在系统启动时运行显然无法完成,除非/etc/hostname/etc/hosts认同。


这个答案为我解决了:首先,我确定/etc/hosts/etc/hostname同意。然后,我只运行了“在启动时运行的命令”,而没有该-b标志(因为它只允许指定的文件不存在,但它在这里)。砰:hostname --fqdn再次返回正确的FQDN。
isync
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.