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

bat*_*man 26 command-line dpkg 12.04

每当我通过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)
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

小智 20

hostname --fqdn

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

然后aptitude install ssmtp再次安装。

  • `/etc/hostname` 中的主机名必须与 `etc/hosts` 127.0.0.1 部分中的主机名匹配 (2认同)

nex*_*y59 13

编辑/etc/hosts做到了。该文件/etc/hostname是正确的,只包含server.exmaple.com

但主持人不正确

127.0.0.1 localhost
127.0.0.1 server
Run Code Online (Sandbox Code Playgroud)

我把它改成这样:

127.0.0.1 localhost.localdomain  localhost
192.168.xxx.xxx  server.example.com   server
Run Code Online (Sandbox Code Playgroud)

然后我跑了hostname -f(简称hostname --fqdn)并得到以下结果。

server.example.com
Run Code Online (Sandbox Code Playgroud)


Anw*_*war 10

解决方案:

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

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

sudo apt-get -f install
Run Code Online (Sandbox Code Playgroud)

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

尝试临时移动ssmtp.

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

      sudo mv /var/lib/dpkg/info/ssmtp* .
    
    Run Code Online (Sandbox Code Playgroud)
  2. 然后尝试使用 apt-get

问题原因:

之前的安装或删除可能未成功完成,因此需要为ssmtppackage完成一些配置步骤。由于 dpkg 在没有首先完成这些步骤的情况下不会进行,因此后续使用apt-getnow 会卡在该步骤上。


use*_*664 5

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

尝试添加行

nameserver 80.80.80.80 
Run Code Online (Sandbox Code Playgroud)

给你的 /etc/resolv.conf

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