Pourquoi est-ce que j'obtiens le nom d'hôte: nom ou erreur de service inconnu?

23

Je reçois cette erreur chaque fois que j'installe des packages 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)

Pourquoi cela se produit-il?

homme chauve-souris
la source
J'ai eu le même problème, le problème était lié au fait que le DNS n'a aidé aucune entrée pour le nom d'hôte - par conséquent, le FQDN n'était pas disponible.

Réponses:

10

Solution:

(Ces types de problèmes n'ont pas de bonnes solutions. Mais seulement certains hack-ish)

Vous devez d'abord essayer cette commande dans un terminal:

sudo apt-get -f install

Si cela ne fonctionne pas, traitez avec la solution haking-ish .

Essayez de déplacer temporairement le script de configuration de ssmtp.

  1. Ouvrez un terminal et exécutez cette commande pour les déplacer vers le répertoire courant

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. Essayez ensuite d'utiliser apt-get

La cause du problème:

L'installation ou la suppression précédente peut ne pas avoir abouti, laissant une étape de configuration à effectuer pour le ssmtppackage. Étant donné que dpkg ne progressera pas sans avoir d'abord terminé les étapes, l'utilisation ultérieure de apt-getmaintenant est bloquée sur cette étape.

Anwar
la source
18

courir hostname --fqdn

Si vous obtenez une erreur, modifiez / etc / hostname et / etc / hosts avec un nom d'hôte correct.

Puis à aptitude install ssmtpnouveau pour l'installer.

croaker___
la source
13

Pour que tout le monde le sache, la modification de / etc / hosts a fait l'affaire que etc / hostname avait raison avec server.exmaple.com

mais les hôtes n'étaient pas corrects

127.0.0.1 localhost
127.0.0.1 server

changez-le en ceci:

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

J'ai exécuté hostname -f et hostname --fqdn et obtenu ce qui suit.

server.example.com

Je pensais juste que tout le monde aimerait savoir.

nexusguy59
la source
5

Votre connexion Internet ne fonctionne probablement pas correctement. Plus précisément, je pense que votre DNS ne se résout pas correctement.

essayez d'ajouter la ligne

nameserver 80.80.80.80 

à ton /etc/resolv.conf

Cela ajoutera temporairement le serveur DNS freenom (jusqu'au prochain démarrage)

user61664
la source
Il s'agit d'un fichier généré. Comment le gérer?
chovy
@chovy si vous vous posez toujours des questions à ce sujet, vous pouvez continuer et sudoedit /etc/resolv.confremplacer n'importe quelle adresse 8.8.8.8pour résoudre les problèmes DNS temporaires. Le fichier sera régénéré au prochain démarrage, vous ne pouvez donc rien faire de trop désastreux à moins que le redémarrage ne soit pas une option
Zanna
2

J'ai reçu le message sur mon réseau domestique sur un système Ubuntu avec une adresse IP attribuée dynamiquement par un routeur fournissant un serveur DHCP et DNS combiné pour mon réseau.

Le message: hostname: Name or service not knownpeut être causé par la panne d'un tel appareil, ne serait-ce qu'un instant.

Par exemple, cela peut se produire si mon routeur domestique est redémarré lorsque mon alimentation est coupée.

Le problème ici est que le service DHCP sur lequel votre réseau s'appuie oublie toutes les adresses IP qu'il a attribuées et les noms de domaine associés. Lorsque votre ordinateur vérifie le nom du serveur DNS associé, le serveur ne l'a plus. Certains serveurs DHCP peuvent éviter les problèmes en écrivant les affectations qu'ils ont effectuées sur leur disque ou leur mémoire flash afin que rien ne soit perdu au redémarrage.


Le serveur peut normalement extraire votre nom d' ordinateur de la requête DHCP de votre système, le rendre nom d' ordinateur .local et le stocker dans ses enregistrements, le rendant disponible simultanément sur son serveur DNS associé. hostname -fqdnDemande généralement le nom de domaine complet sur votre réseau à partir de votre serveur DNS et s'il a l'enregistrement, il renverra ce nom. Le .localsuffixe le fait ressembler à un nom de domaine complet valide (bien que ce ne soit pas vraiment un nom de domaine global valide). C'est pourquoi vous n'aurez peut-être pas à spécifier manuellement un nom de domaine dans les fichiers / etc / hosts ou / etc / hostname.


Le redémarrage du serveur DHCP peut entraîner d'autres problèmes car des adresses IP peuvent être attribuées à plusieurs ordinateurs simultanément, empêchant certains de communiquer. L'adresse est attribuée une fois avant le redémarrage du serveur, puis une nouvelle fois.

Si votre serveur DHCP oublie ses affectations, la chose sûre à faire est de reconnecter chaque ordinateur qu'il sert au redémarrage. Lorsque j'ai perdu le mien, je me suis simplement déconnecté et reconnecté à mon point d'accès wifi. Sur un réseau câblé, vous pouvez utiliser ifdownet / ifupou simplement déconnecter et reconnecter le câble réseau. Lors de la reconnexion, mon système utilise automatiquement dhclient pour obtenir une nouvelle adresse - mon ordinateur et le serveur conviennent maintenant de qui je suis et le message n'apparaît plus.

Si vous attendez assez longtemps, le bail DHCP expirera et votre système demandera et obtiendra un nouveau bail du serveur - ce qui résout le problème. Ce sera probablement des heures ou des jours plus tard (pour mon serveur, c'est un jour).

Si vous avez défini un nom et une adresse IP statiques et si les enregistrements de recherche inversée DNS sont corrects, le problème ne devrait pas se produire.

John S Gruber
la source
1

J'ai rencontré cette erreur ce matin et il s'est avéré que le nom d'hôte était mal orthographié /etc/hostname. En corrigeant cela, il était d'accord avec l'orthographe du nom d'hôte pour /etc/hostsrésoudre le problème. La hostname -b -F /etc/hostnamecommande qui s'exécute au démarrage ne peut apparemment être exécutée que si /etc/hostnameelle est /etc/hostsacceptée.

Michael Merideth
la source
Cette réponse l'a résolu pour moi: d'abord je me suis assuré /etc/hostset je suis d' /etc/hostnameaccord. Ensuite, j'ai exécuté la "commande qui s'exécute au démarrage", uniquement sans l' -bindicateur (car elle permet simplement au fichier spécifié d'être inexistant, mais il est ici). Et bang: hostname --fqdnrenvoie à nouveau le nom de domaine complet approprié.
isync