Почему я получаю имя хоста: имя или служба не известна ошибка?

23

Я получаю эту ошибку, когда устанавливаю какие-либо пакеты через 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)

Почему это происходит?

Бэтмен
источник
У меня была та же проблема, проблема была связана с тем фактом, что DNS не помогал ни одной записи для имени хоста - поэтому полное доменное имя было недоступно.

Ответы:

10

Решение:

(Эти типы проблем не имеют хороших решений. Но только некоторые хакинг)

Сначала вы должны попробовать эту команду в терминале:

sudo apt-get -f install

Если это не работает, обработайте с помощью хакерского решения.

Попробуйте временно переместить скрипт конфигурации ssmtp.

  1. Откройте терминал и выполните эту команду, чтобы переместить их в текущий каталог.

     sudo mv /var/lib/dpkg/info/ssmtp* .
    
  2. Тогда попробуйте использовать apt-get

Причина проблемы:

Предыдущая установка или удаление могут быть не завершены успешно, что оставляет некоторый шаг настройки для ssmtpпакета. Поскольку dpkg не будет прогрессировать без предварительного завершения шагов, последующее использование apt-getтеперь застревает на этом шаге.

Анвар
источник
18

бег hostname --fqdn

Если вы получили ошибку, отредактируйте / etc / hostname и / etc / hosts с правильным именем хоста.

Затем aptitude install ssmtpснова получить его для установки.

croaker___
источник
13

Просто чтобы все знали, редактирование / etc / hosts помогло, так как etc / hostname была правильной с server.exmaple.com

Однако хозяева не были правильными

127.0.0.1 localhost
127.0.0.1 server

измените это на это:

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

Я запустил hostname -f и hostname --fqdn и получил следующее.

server.example.com

Просто думал, что все хотели бы знать.

nexusguy59
источник
5

Скорее всего, ваше интернет-соединение не работает должным образом. В частности, я думаю, что ваш DNS не разрешается должным образом.

попробуйте добавить строку

nameserver 80.80.80.80 

на ваш /etc/resolv.conf

Это позволит временно добавить DNS-сервер freenom (до следующей загрузки).

user61664
источник
Это сгенерированный файл. Как мне это сделать?
Чови
@chovy, если вы все еще задаетесь вопросом об этом, можно продолжать и sudoedit /etc/resolv.confзаменить любой адрес, 8.8.8.8чтобы решить временные проблемы с DNS. Файл будет регенерирован при следующей загрузке, так что вы не сможете сделать здесь слишком пагубных
Zanna
2

Я получил сообщение в моей домашней сети в системе Ubuntu с динамически назначаемым IP-адресом от маршрутизатора, обеспечивающего объединенный сервер DHCP и DNS для моей сети.

Сообщение: hostname: Name or service not knownможет быть вызвано отключением такого устройства, хотя бы на мгновение.

Например, это может произойти, если мой домашний маршрутизатор перезагружается при отключении питания.

Проблема здесь в том, что служба DHCP, на которую опирается ваша сеть, забывает все назначенные ей IP-адреса и связанные с ними доменные имена. Когда ваш компьютер проверяет связанный DNS-сервер на свое собственное имя, сервер больше не имеет его. Некоторые DHCP-серверы могут избежать проблем, записав присвоения, которые они сделали, на свой диск или флэш-память, чтобы при перезапуске ничего не терялось.


Сервер обычно может взять ваше имя компьютера из запроса DHCP вашей системы, сделать его именем компьютера .local и сохранить его в своих записях, сделав его доступным на соответствующем DNS-сервере одновременно. Обычно hostname -fqdnзапрашивает полное доменное имя в вашей сети с вашего DNS-сервера и, если у него есть запись, возвращает это имя. .localСуффикс делает его похожим на действительное полный доменное имя (хотя это на самом деле не является допустимым глобальным доменным имя). Вот почему вам может не потребоваться указывать имя домена вручную в файлах / etc / hosts или / etc / hostname.


Перезапуск DHCP-сервера может вызвать дополнительные проблемы, поскольку IP-адреса могут быть назначены нескольким компьютерам одновременно, в результате чего некоторые из них не смогут обмениваться данными. Адрес назначается один раз до перезапуска сервера, и снова после этого.

Если ваш DHCP-сервер забывает свои назначения, то безопаснее всего заново подключить каждый компьютер, который он обслуживает, при перезагрузке. Когда я потерял свой, я просто отключился и снова подключился к своей точке доступа Wi-Fi. В проводной сети вы можете использовать ifdownи ifupили просто отключить и снова подключить сетевой кабель. При повторном подключении моя система автоматически использует dhclient для получения нового адреса - мой компьютер и сервер теперь договариваются о том, кто я, и сообщение больше не появляется.

Если вы подождете достаточно долго, срок аренды DHCP истечет, и ваша система запросит и получит новый срок аренды с сервера - устранение проблемы. Вероятно, это будет часами или днями позже (для моего сервера это один день).

Если вы определили статическое IP-имя и адрес и если записи обратного просмотра DNS верны, проблема не должна возникать.

Джон С. Грубер
источник
1

Я столкнулся с этой ошибкой этим утром, и оказалось, что имя хоста было написано с ошибкой /etc/hostname. Исправив это так, чтобы он согласился с написанием имени хоста в, решил /etc/hostsпроблему. Команда, hostname -b -F /etc/hostnameкоторая запускается во время загрузки, по-видимому, не может завершиться, если /etc/hostnameи не /etc/hostsсогласиться.

Майкл Меридет
источник
Этот ответ решил для меня: сначала я убедился /etc/hostsи /etc/hostnameсогласился. Затем я запустил «команду, которая запускается во время загрузки», только без -bфлага (поскольку он просто позволяет указанному файлу не существовать, но он здесь). И взрыв: hostname --fqdnснова возвращает правильное полное доменное имя.
isync