Por que eu recebo o nome do host: erro de nome ou serviço não conhecido?

23

Estou recebendo esse erro sempre que instalo qualquer pacote via 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)

Porque isso está acontecendo?

homem Morcego
fonte
Eu tive o mesmo problema, o problema estava relacionado ao fato de o DNS não ajudar em nenhuma entrada do nome do host - portanto, o FQDN estava indisponível.

Respostas:

10

Solução:

(Esses tipos de problemas não têm boas soluções. Mas apenas alguns truques)

Você deve primeiro tentar este comando em um terminal:

sudo apt-get -f install

Se não funcionar, processe com a solução haking-ish .

Tente mover temporariamente o script de configuração de ssmtp.

  1. Abra um terminal e execute este comando para movê-los para o diretório atual

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. Então tente usar apt-get

A causa do problema:

A instalação ou remoção anterior pode não ter sido concluída com êxito, deixando algumas etapas de configuração a serem feitas para o ssmtppacote. Como o dpkg não progride sem primeiro concluir as etapas, o uso subsequente de apt-getagora fica preso nessa etapa.

Anwar
fonte
18

corre hostname --fqdn

Se você receber um erro, edite / etc / hostname e / etc / hosts com um nome de host adequado.

Então, aptitude install ssmtpnovamente, para instalá-lo.

croaker___
fonte
13

Para que todos saibam, a edição do / etc / hosts fez o truque que o etc / hostname estava certo com server.exmaple.com

no entanto, os anfitriões não estavam corretos

127.0.0.1 localhost
127.0.0.1 server

mude para isso:

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

Executei o hostname -f e o hostname --fqdn e obtive o seguinte.

server.example.com

Apenas pensei que todos gostariam de saber.

nexusguy59
fonte
5

Provavelmente sua conexão com a Internet não está funcionando corretamente. Especificamente, acho que seu DNS não está resolvendo corretamente.

tente adicionar a linha

nameserver 80.80.80.80 

para o seu /etc/resolv.conf

Isso adicionará o servidor DNS freenom temporariamente (até a próxima inicialização)

user61664
fonte
Esse é um arquivo gerado. Como eu gerencio isso?
chovy
@chovy Se você ainda está pensando sobre isso, é seguro seguir em frente e sudoedit /etc/resolv.confsubstituir qualquer endereço existente 8.8.8.8para resolver problemas temporários de DNS. O arquivo será regenerado na próxima inicialização, então você não pode fazer nada muito desastroso aqui a menos que a reinicialização não é uma opção
Zanna
2

Recebi a mensagem na minha rede doméstica em um sistema Ubuntu com um endereço IP atribuído dinamicamente a partir de um roteador que fornece um servidor DHCP e DNS combinado para minha rede.

A mensagem: hostname: Name or service not knownpode ser causada por um dispositivo desativado, mesmo que apenas por um instante.

Por exemplo, isso pode acontecer se meu roteador doméstico for reiniciado quando minha energia acabar.

O problema aqui é que o serviço DHCP em que sua rede depende depende de todos os endereços IP atribuídos e os nomes de domínio associados. Quando o computador verifica o servidor DNS associado por seu próprio nome, o servidor não o possui mais. Alguns servidores DHCP podem evitar problemas gravando as atribuições que fizeram no disco ou na memória flash, para que nada se perca ao reiniciar.


O servidor pode normalmente tirar seu nome de computador das solicitações DHCP do sistema, torná-lo .local do computador e armazená-lo em seus registros, disponibilizando-o no servidor DNS associado simultaneamente. Normalmente, hostname -fqdnsolicita o nome de domínio completo na sua rede ao servidor DNS e, se tiver o registro, ele retornará esse nome. O .localsufixo faz com que pareça um nome de domínio totalmente qualificado válido (embora não seja realmente um nome de domínio global válido). É por isso que você pode não precisar especificar um nome de domínio manualmente nos arquivos / etc / hosts ou / etc / hostname.


A reinicialização do servidor DHCP pode causar mais problemas, pois os endereços IP podem ser atribuídos a vários computadores simultaneamente, fazendo com que alguns não consigam se comunicar. O endereço é atribuído uma vez antes de o servidor reiniciar e novamente depois.

Se o seu servidor DHCP esquecer suas atribuições, o mais seguro é reconectar cada computador que ele serve ao reiniciar. Quando perdi o meu, simplesmente desconectei e reconectei ao meu ponto de acesso wifi. Em uma rede com fio, você pode usar ifdowne ifupou simplesmente desconectar e reconectar o cabo de rede. Ao reconectar meu sistema, o dhclient é usado automaticamente para obter um novo endereço - meu computador e o servidor agora concordam com quem eu sou e a mensagem não aparece mais.

Se você esperar o tempo suficiente, a concessão do DHCP atingirá o tempo limite e o sistema solicitará e obterá uma nova concessão do servidor - resolvendo o problema. Provavelmente demorará horas ou dias depois (para o meu servidor é um dia).

Se você definiu um nome e endereço IP estáticos e se os registros de pesquisa inversa do DNS estiverem corretos, o problema não deve ocorrer.

John S Gruber
fonte
1

Corri para esse erro esta manhã, e o nome do host estava incorreto /etc/hostname. Corrigir isso para que ele concordasse com a ortografia do nome do host /etc/hostsesclareceu o problema. O hostname -b -F /etc/hostnamecomando que é executado no momento da inicialização aparentemente não pode ser concluído, a menos /etc/hostnamee /etc/hostsconcordar.

Michael Merideth
fonte
Esta resposta resolveu para mim: Primeiro, certifiquei-me /etc/hostse /etc/hostnameconcordo. Depois, executei o "comando que é executado no momento da inicialização", apenas sem o -bsinalizador (pois apenas permite que o arquivo especificado não exista, mas está aqui). E bang: hostname --fqdnretorna o FQDN adequado novamente.
Isync # 13/17