J'utilise Ubuntu 10.04 LTS, et quand je tape la commande hostname --fqdn
, je reçois le message: hostname: Name or service not known
.
Pour cette raison, je ne peux pas installer global
correctement et obtenir l'erreur suivante lorsque j'essaie:
Setting up global (5.7.1-1) ...
hostname: Name or service not known
dpkg: error processing global (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
global
E: Sub-process /usr/bin/dpkg returned an error code (1)
Mon /etc/nsswitch.conf
est ci-dessous.
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Quelqu'un at-il des idées sur ce que cela signifie et comment je peux y remédier?
linux
ubuntu
networking
hostname
RadiantHex
la source
la source
Réponses:
Pouvez-vous fournir le contenu de
/etc/nsswitch.conf
?Il semble que /etc/nsswitch.conf ait une mauvaise valeur pour la ligne "hosts". Commence-t-il par des "fichiers"?
Sinon, le FQDN est défini en éditant / etc / hosts et en plaçant le FQDN sur la ligne où le nom d'hôte apparaît. Supposons que vous ayez un nom d'hôte "foo" et que vous trouviez une ligne:
Vous le modifieriez comme ceci:
foo.localdomain
serait votre nouveau nom de domaine complet.la source
éditez / etc / hosts pour ajouter votre nom de domaine complet
Informations sur la syntaxe disponibles ici: http://www.faqs.org/docs/securing/chap9sec95.html
mise à jour: en relisant votre question, il semble presque que vous n'ayez pas défini votre chemin correctement ou qu'il y ait un problème avec le programme hostname.
faire 'quel nom d'hôte'
il doit retourner avec le chemin '/ bin / hostname'
si cela fonctionne, essayez à nouveau la commande comme,
'/ bin / hostname --fqdn'
la source
Contrairement à l'
hostname
invocation de commande simple , l'invocationhostname --fqdn
tentera de faire quelques autres choses, ce qui entraînera souvent des recherches DNS.Prenons par exemple l'invocation (réussie) suivante (cela provient d'une boîte Red Hat, mais j'imagine que ce devrait être la même chose pour Ubuntu):
Notez l'
--verbose
option très utile .En bref, tout autre chose qu'un simple
hostname
fait probablement plus que ce que vous attendez. Voici un autre exemple:Et pour terminer:
Notez que le nom d'hôte d'un système (tel que renvoyé par gethostname) peut me correspondre à un nom d'hôte non qualifié, tel que simplement 'myserver'. C'est pourquoi le programme que vous souhaitez installer utilise à la
hostname --fqdn
place.Le message d'erreur
hostname: Name or service not known
provient des fonctions du résolveur : ce sont les parties de la bibliothèque système qui se traduisent entre les noms et les adresses (généralement les noms DNS et les adresses IP).En fait, le résolveur fait plus que simplement DNS (et plus que simplement traduire entre les noms d'hôte et les adresses IP); son comportement est configuré en partie par le fichier
/etc/nsswitch.conf
, et généralement il consultera les éléments suivants, généralement dans cet ordre:(note, vous pouvez également avoir un serveur DNS de mise en cache tel que dnsmasqd --- pour le point de ce qui précède, qui est toujours sous le mécanisme «dns»).
Il convient de souligner que des outils tels que dig , host et le vénérable nslookup ne suivent pas cet ordre; ce sont explicitement des outils d'interrogation DNS. Cela signifie que si vous vous en remettez à eux (dans un script par exemple), vous obtiendrez peut-être un résultat différent de celui des programmes clients habituels (qui utilisent le résolveur système). Pour cette raison, utilisez le programme getent dans les scripts, en particulier si vous avez un composant de mise en cache tel que nscd en cours d'exécution.
Donc, la clé à retenir ici est que a) si vous avez / etc / hosts bien configuré avec une entrée pour votre propre machine, et b) votre /etc/nsswitch.conf a la configuration habituelle -
hosts: files dns
dans cet ordre, alors c) même si vous n'avez pas de DNS bien configuré dans votre environnement, celahostname --fqdn
devrait fonctionner.Dans un DNS bien configuré, on s'attendrait à ce que vous ayez une adresse "inverse" (un "enregistrement PTR") qui donne le nom "canonique" de votre serveur, et ce nom devrait également pouvoir être recherché (un " Un record "pour IPv4).
Version courte: ajouter
--verbose
; il vous indiquera ce qui vous manque.J'espère que cela vous aide à comprendre ce qui se passe.
la source