Używam Ubuntu 10.04 LTS, a po wpisaniu polecenia hostname --fqdn
, pojawia się komunikat: hostname: Name or service not known
.
Z tego powodu nie mogę zainstalować global
pomyślnie i podczas próby pojawia się następujący błąd:
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)
Mój /etc/nsswitch.conf
jest poniżej.
# /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
Czy ktoś ma jakieś pomysły na temat tego, co to znaczy i jak mogę to naprawić?
linux
ubuntu
networking
hostname
RadiantHex
źródło
źródło
Odpowiedzi:
Czy możesz podać treść
/etc/nsswitch.conf
?Wygląda na to, że /etc/nsswitch.conf ma złą wartość dla linii „hosts”. Czy zaczyna się od „plików”?
W przeciwnym razie nazwę FQDN ustawia się, edytując plik / etc / hosts i umieszczając nazwę FQDN w wierszu, w którym pojawia się nazwa hosta. Załóżmy, że masz nazwę hosta „foo” i znajdziesz wiersz:
Zmodyfikowałbyś to w ten sposób:
foo.localdomain
będzie twoja nowa nazwa FQDN.źródło
edytuj / etc / hosts, aby dodać swoją FQDN
Informacje dotyczące składni znajdują się tutaj: http://www.faqs.org/docs/securing/chap9sec95.html
aktualizacja: ponowne przeczytanie pytania brzmi prawie tak, jakbyś nie miał właściwej ścieżki lub coś jest nie tak z programem nazw hostów.
zrób „jaka nazwa hosta”
powinien powrócić ze ścieżką „/ bin / hostname”
jeśli to zadziała, spróbuj ponownie wykonać polecenie,
„/ bin / hostname --fqdn”
źródło
W przeciwieństwie do prostego
hostname
wywołania polecenia, wywołaniehostname --fqdn
będzie próbowało zrobić jeszcze kilka rzeczy, co często spowoduje wyszukiwanie DNS.Weźmy na przykład następujące (udane) wywołanie (pochodzi z pudełka Red Hat, ale wyobrażam sobie, że powinno być tak samo dla Ubuntu):
Zwróć uwagę na bardzo pomocną
--verbose
opcję.Krótko mówiąc, wszystko inne niż proste
hostname
prawdopodobnie robi więcej niż się spodziewasz. Oto inny przykład:I podsumowując:
Zauważ, że nazwa hosta systemu (zwrócona przez gethostname) może mi dać niekwalifikowaną nazwę hosta, na przykład „myserver”. Dlatego program, który chcesz zainstalować, używa
hostname --fqdn
zamiast tego.Komunikat o błędzie
hostname: Name or service not known
pochodzi z funkcji resolvera : są to części biblioteki systemowej, które tłumaczą nazwy i adresy (zazwyczaj nazwy DNS i adresy IP).W rzeczywistości resolver robi więcej niż tylko DNS (i więcej niż tylko translację między nazwami hostów a adresami IP); jego zachowanie jest częściowo skonfigurowane przez plik
/etc/nsswitch.conf
i zwykle sprawdza następujące, zwykle w tej kolejności:(uwaga, możesz również mieć buforujący serwer DNS, taki jak dnsmasqd --- w powyższym punkcie, który wciąż jest objęty mechanizmem „dns”).
Warto zauważyć, że narzędzia takie jak dig , host i czcigodny nslookup nie przestrzegają tej kolejności; są to jawnie narzędzia do wysyłania zapytań DNS. Oznacza to, że jeśli na nich polegasz (na przykład w skrypcie), możesz uzyskać inny wynik niż zwykłe programy klienckie (korzystające z resolvera systemu). Z tego powodu używaj programu getent w skryptach, szczególnie jeśli masz komponent buforujący, taki jak nscd.
Kluczową kwestią tutaj jest to, że: a) jeśli dobrze skonfigurujesz / etc / hosts z wpisem dla twojego komputera, i b) twój /etc/nsswitch.conf ma zwykłą konfigurację -
hosts: files dns
w tej kolejności, to c) nawet jeśli nie masz dobrze skonfigurowanego DNS w swoim środowisku,hostname --fqdn
powinno działać.W dobrze skonfigurowanym systemie DNS można oczekiwać, że będzie miał jeden „zwrotny” adres („rekord PTR”), który nadaje „kanoniczną” nazwę serwera, a nazwę tę można również wyszukać („ Rekord „dla IPv4).
Wersja skrócona: dodaj
--verbose
; wskaże ci to, czego ci brakuje.Mam nadzieję, że pomożesz zrozumieć, co się dzieje.
źródło