Я использую Ubuntu 10.04 LTS, и когда я набираю команду hostname --fqdn
, я получаю сообщение: hostname: Name or service not known
.
Из-за этого я не могу установить global
успешно, и при попытке получить следующую ошибку:
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)
Мой /etc/nsswitch.conf
ниже.
# /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
У кого-нибудь есть идеи о том, что это значит и как я могу это исправить?
linux
ubuntu
networking
hostname
RadiantHex
источник
источник
Ответы:
Можете ли вы предоставить содержание
/etc/nsswitch.conf
?Похоже, что /etc/nsswitch.conf имеет плохое значение для строки "hosts". Это начинается с "файлов"?
В противном случае полное доменное имя устанавливается путем редактирования / etc / hosts и помещения полного доменного имени в строку, где отображается имя хоста. Предположим, у вас есть имя хоста "foo", и вы найдете строку:
Вы бы отредактировали это так:
foo.localdomain
будет вашим новым полным доменным именем.источник
отредактируйте / etc / hosts, чтобы добавить ваше полное доменное имя
Информация о синтаксисе находится здесь: http://www.faqs.org/docs/securing/chap9sec95.html.
обновление: перечитывание вашего вопроса снова звучит так, как будто вы либо не правильно указали путь, либо что-то не так с программой hostname.
сделать "какое имя хоста"
должен возвращаться с путем '/ bin / hostname'
если это работает, попробуйте команду снова, как,
'/ bin / hostname --fqdn'
источник
В отличие от простого
hostname
вызова команды, вызовhostname --fqdn
попытается сделать еще несколько вещей, что часто приводит к некоторым поискам DNS.Возьмем, к примеру, следующий (успешный) вызов (это из коробки Red Hat, но я бы предположил, что он должен быть таким же для Ubuntu):
Обратите внимание на очень полезный
--verbose
вариант.Короче говоря, все, кроме простого
hostname
, вероятно, делает больше, чем вы ожидаете. Вот еще один пример:И округлить это:
Обратите внимание, что имя хоста системы (возвращаемое gethostname) может содержать безусловное имя хоста, например просто «myserver». Вот почему программа, которую вы хотите установить, использует
hostname --fqdn
вместо этого.Сообщение об ошибке
hostname: Name or service not known
исходит от функций распознавателя : это части системной библиотеки, которые преобразуют имена и адреса (обычно это имена DNS и IP-адреса).На самом деле, распознаватель делает больше, чем просто DNS (и больше, чем просто перевод между именами хостов и IP-адресами); его поведение частично настраивается файлом
/etc/nsswitch.conf
, и обычно он будет обращаться к следующему, обычно в следующем порядке:(обратите внимание, вы также можете иметь кеширующий DNS-сервер, такой как dnsmasqd --- для вышеприведенного пункта, который все еще находится под механизмом 'dns').
Стоит отметить, что такие инструменты, как dig , host и уважаемый nslookup , не следуют этому порядку; они явно являются инструментами DNS-запросов. Это означает, что если вы полагаетесь на них (например, в сценарии), вы можете в итоге получить результат, отличный от результатов обычных клиентских программ (использующих системный преобразователь). По этой причине используйте программу getent в сценариях, особенно если у вас есть компонент кэширования, такой как nscd.
Таким образом, ключевым моментом здесь является то, что а) если у вас / etc / hosts хорошо настроена запись для вашей собственной машины, и б) ваш /etc/nsswitch.conf имеет обычную конфигурацию -
hosts: files dns
в таком порядке, то в) даже если у вас нет хорошо настроенного DNS в вашей среде, тоhostname --fqdn
должно работать.В правильно сконфигурированном DNS вы должны иметь один «обратный» адрес («запись PTR»), который дает «каноническое» имя вашего сервера, и это имя также должно быть в состоянии найти (« Запись "для IPv4).
Короткая версия: добавить
--verbose
; это укажет вам на то, чего вам не хватает.Надеюсь, что это поможет вам понять, что происходит.
источник