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

我通过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) 

为什么会这样?

解:

(这些类型的问题没有很好的解决方案。但只有一些问题)

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

 sudo apt-get -f install 

如果它不起作用,请使用haking-ish解决方案。

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

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

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

问题的原因:

先前的安装或删除可能未成功完成,为ssmtp包留下了一些配置步骤。 因为,如果没有先完成这些步骤,dpkg将无法进行,后续使用apt-get现在会卡在该步骤上。

运行hostname --fqdn

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

然后aptitude install ssmtp再次aptitude install ssmtp以使其安装。

众所周知,/ 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和hostname –fqdn并获得了以下内容。

 server.example.com 

只是想大家都想知道。

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

尝试添加该行

 nameserver 80.80.80.80 

到你的/etc/resolv.conf

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

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

消息: hostname: Name or service not known可能是由于这样的设备停机造成的,如果只是瞬间造成的。

例如,如果我的家用路由器在电源耗尽时重新启动,就会发生这种情况。

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


服务器通常可以从您的系统DHCP请求中获取您的计算机名 ,使其成为计算机名 .local并将其存储在其记录中,使其同时在其关联的DNS服务器中可用。 通常hostname -fqdn从您的DNS服务器通过您的网络请求完整的域名,如果它有记录,它将返回该名称。 .local后缀使其看起来像一个有效的完全限定域名(尽管它实际上不是一个有效的全局域名)。 这就是您可能不必在/ etc / hosts或/ etc / hostname文件中手动指定域名的原因。


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

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

如果您等待足够长的时间,DHCP租约将超时,您的系统将要求并从服务器获取新租约 – 清除问题。 这可能是几小时或几天后(对我的服务器来说是一天)。

如果已定义静态IP名称和地址,并且DNS反向查找记录正确,则不应发生此问题。

我今天早上遇到了这个错误,结果发现主机名在/etc/hostname拼写错误。 更正这一点,以便同意/etc/hosts的主机名拼写清除了问题。 除非/etc/hostname/etc/hosts同意,否则在引导时运行的hostname -b -F /etc/hostname命令显然无法完成。