为什么我得到主机名:名称或服务未知错误?
我通过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
的配置脚本。
-
打开终端并执行此命令将它们移动到当前目录
sudo mv /var/lib/dpkg/info/ssmtp* .
-
然后尝试使用
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接入点。 在有线网络上,您可以使用ifdown
和ifup
或者只需断开并重新连接网络电缆。 重新连接我的系统时会自动使用dhclient获取新地址 – 我的计算机和服务器现在同意我是谁,并且不再显示该消息。
如果您等待足够长的时间,DHCP租约将超时,您的系统将要求并从服务器获取新租约 – 清除问题。 这可能是几小时或几天后(对我的服务器来说是一天)。
如果已定义静态IP名称和地址,并且DNS反向查找记录正确,则不应发生此问题。
我今天早上遇到了这个错误,结果发现主机名在/etc/hostname
拼写错误。 更正这一点,以便同意/etc/hosts
的主机名拼写清除了问题。 除非/etc/hostname
和/etc/hosts
同意,否则在引导时运行的hostname -b -F /etc/hostname
命令显然无法完成。