Warum erhalte ich den Hostnamen: Name oder Dienst unbekannter Fehler?

23

Ich erhalte diesen Fehler, wenn ich Pakete installiere über 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)

Warum passiert das?

Batman
quelle
Ich hatte das gleiche Problem, das Problem hing mit der Tatsache zusammen, dass der DNS keinem Eintrag für den Hostnamen half - daher war der FQDN nicht verfügbar.

Antworten:

10

Lösung:

(Diese Art von Problemen hat keine guten Lösungen. Aber nur ein paar Probleme.)

Sie sollten diesen Befehl zuerst in einem Terminal versuchen:

sudo apt-get -f install

Wenn es nicht funktioniert, verarbeiten Sie mit haking-ish Lösung.

Versuchen Sie, das Konfigurationsskript von vorübergehend zu verschieben ssmtp.

  1. Öffnen Sie ein Terminal und führen Sie diesen Befehl aus, um sie in das aktuelle Verzeichnis zu verschieben

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. Dann versuchen Sie es mit apt-get

Die Ursache des Problems:

Die vorherige Installation oder Deinstallation wurde möglicherweise nicht erfolgreich abgeschlossen, sodass einige Konfigurationsschritte für das ssmtpPaket ausgeführt werden müssen. Da dpkg erst nach Abschluss der Schritte fortschreitet, bleibt die nachfolgende Verwendung von apt-getnow bei diesem Schritt hängen.

Anwar
quelle
18

Lauf hostname --fqdn

Wenn Sie eine Fehlermeldung erhalten, bearbeiten Sie / etc / hostname und / etc / hosts mit einem korrekten Hostnamen.

Dann aptitude install ssmtpnochmal um es zu installieren.

croaker___
quelle
13

Nur damit jeder weiß, hat die Bearbeitung von / etc / hosts den Trick ausgeführt, dass der etc / hostname mit server.exmaple.com richtig war

Die Gastgeber waren jedoch nicht korrekt

127.0.0.1 localhost
127.0.0.1 server

ändere es so:

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

Ich habe hostname -f und hostname --fqdn ausgeführt und Folgendes erhalten.

server.example.com

Ich dachte, jeder würde es gerne wissen.

nexusguy59
quelle
5

Höchstwahrscheinlich funktioniert Ihre Internetverbindung nicht richtig. Insbesondere denke ich, dass Ihr DNS nicht richtig aufgelöst wird.

Versuchen Sie, die Zeile hinzuzufügen

nameserver 80.80.80.80 

zu deinem /etc/resolv.conf

Dadurch wird der Freenom-DNS-Server vorübergehend hinzugefügt (bis zum nächsten Start).

user61664
quelle
Das ist eine generierte Datei. Wie schaffe ich das?
Chovy
@chovy Wenn Sie sich immer noch darüber wundern, können Sie sicher vorgehen und sudoedit /etc/resolv.confdie vorhandene Adresse ersetzen 8.8.8.8, um temporäre DNS-Probleme zu beheben. Die Datei wird beim nächsten Start neu generiert, sodass Sie hier nichts Unheilvolles anrichten können, es sei denn, ein Neustart ist nicht möglich
Zanna
2

Ich habe die Nachricht in meinem Heimnetzwerk auf einem Ubuntu-System mit einer dynamisch zugewiesenen IP-Adresse von einem Router erhalten, der einen kombinierten DHCP- und DNS-Server für mein Netzwerk bereitstellt.

Die Nachricht: hostname: Name or service not known Kann durch einen Ausfall eines solchen Geräts verursacht werden, wenn auch nur für einen Moment.

Dies kann zum Beispiel passieren, wenn mein Heimrouter nach einem Stromausfall neu gestartet wird.

Das Problem hierbei ist, dass der DHCP-Dienst, auf den sich Ihr Netzwerk stützt, alle zugewiesenen IP-Adressen und die zugehörigen Domänennamen vergisst. Wenn Ihr Computer den zugehörigen DNS-Server auf seinen eigenen Namen überprüft, verfügt er nicht mehr über diesen. Einige DHCP-Server können Probleme vermeiden, indem sie die vorgenommenen Zuweisungen auf die Festplatte oder den Flash-Speicher schreiben, sodass beim Neustart nichts verloren geht.


Der Server nimmt normalerweise Ihren Computernamen von der DHCP-Anforderung Ihres Systems, macht ihn zum Computernamen .local und speichert ihn in seinen Datensätzen, sodass er gleichzeitig auf dem zugeordneten DNS-Server verfügbar ist. Fordert normalerweise hostname -fqdnden vollständigen Domänennamen über Ihr Netzwerk von Ihrem DNS-Server an. Wenn der Eintrag vorhanden ist, wird dieser Name zurückgegeben. Das .localSuffix lässt es wie einen gültigen, vollständig qualifizierten Domainnamen aussehen (obwohl es sich nicht wirklich um einen gültigen globalen Domainnamen handelt). Aus diesem Grund müssen Sie möglicherweise keinen Domänennamen manuell in den Dateien / etc / hosts oder / etc / hostname angeben.


Der Neustart des DHCP-Servers kann weitere Probleme verursachen, da IP-Adressen möglicherweise mehreren Computern gleichzeitig zugewiesen werden und einige nicht kommunizieren können. Die Adresse wird vor dem Neustart des Servers und danach einmal vergeben.

Wenn Ihr DHCP-Server seine Zuweisungen vergisst, ist es sicher, jeden Computer, den er bedient, beim Neustart erneut anzuschließen. Als ich meine verlor, habe ich einfach die Verbindung zu meinem WLAN-Zugangspunkt getrennt und wieder hergestellt. In einem kabelgebundenen Netzwerk können Sie das Netzwerkkabel verwenden ifdownund / ifupoder einfach trennen und wieder anschließen. Beim erneuten Herstellen der Verbindung verwendet mein System automatisch dhclient, um eine neue Adresse abzurufen. Mein Computer und der Server stimmen nun überein, wer ich bin, und die Meldung wird nicht mehr angezeigt.

Wenn Sie lange genug warten, tritt beim DHCP-Lease eine Zeitüberschreitung auf, und Ihr System fordert einen neuen Lease vom Server an, um das Problem zu beheben. Dies wird wahrscheinlich Stunden oder Tage später sein (für meinen Server ist es ein Tag).

Wenn Sie einen statischen IP-Namen und eine statische IP-Adresse definiert haben und die DNS-Reverse-Lookup-Einträge korrekt sind, sollte das Problem nicht auftreten.

John S Gruber
quelle
1

Ich bin heute Morgen auf diesen Fehler gestoßen, und es stellte sich heraus, dass der Hostname falsch geschrieben wurde /etc/hostname. Das Korrigieren, so dass es mit der Schreibweise des Hostnamens übereinstimmt, /etc/hostsbehebt das Problem. Der hostname -b -F /etc/hostnameBefehl, läuft beim Booten offenbar nicht , es sei denn abschließen kann /etc/hostnameund /etc/hostszustimmen.

Michael Merideth
quelle
Diese Antwort hat es für mich gelöst: Zuerst habe ich mich vergewissert /etc/hostsund /etc/hostnamebin einverstanden. Dann habe ich den "Befehl, der beim Booten ausgeführt wird" ausgeführt, nur ohne das -bFlag (da die angegebene Datei nur nicht vorhanden sein kann, aber hier ist sie). Und bang: hostname --fqdnGibt wieder den richtigen FQDN zurück.
Isync