[РЕШЕНО] mc тормозит при старте

2vadik
Не доводилось глубоко вникать в суть файла /etc/hostname. Скорее всего, он просто используется в скриптах начальной инициализации (systemd?). А вот стандартные сетевые библиотеки однозначно используют /etc/hosts.
Как-нибудь, возможно, покопаюсь. Но пока все есть как есть.
При нормальной работе сеть или есть, или нет. И все работает адекватно. Проблема, как Вы могли заметить, возникает именно при "обмане", когда интерфейс поднят и указаны внешние DNS. При использовании стандартных менеджеров сети такой ситуации обычно не возникает.
kurych
2akorop: Не совсем согласен. Ubuntu вообще для домохозяек, поэтому там как можно более универсально делают. И какими-то хитрыми костылями все завязывают. Не знаю, как сейчас, но раньше там даже Firefox переходил в автономный режим, если не был доступен интернет. (Меня это изрядно доставало).
Просто в Вашем случае из-за статики сеть иногда находится не совсем в адекватном состоянии. Поэтому нужна такая поправка. То есть, если человек не пользуется менеджерами сети, а настраивает все руками и статикой, то предполагается, что он знает, что делает.
Хм... А что плохого может быть от ресолвинга своего хоста в 127.0.0.1? Кроме того, цитирую упомянутую статью Вики:
Note: Вам теперь не нужно больше редактировать /etc/hosts. Пакет nss-myhostname будет обеспечивать разрешение имен, и устанавливается на все системы по умолчанию
Только пакета такого нет, но есть о нём какое-то упоминание в systemd. "В лоб" запустить его не получается, а разбираться совершенно неохота. Отредактировать руками hosts проще, чем его запустить, даже если бы он запускался.
Так что, похоже, и в Арче имя хоста должно было бы автоматом вписываться, да только не работает это. Надо барепортить?
[root@s2 etc]# pacman -Ss nss-myhostname
core/systemd 198-1 [установлен]
    system and service manager
[root@s2 etc]# systemctl status nss-myhostname
nss-myhostname.service
	  Loaded: error (Reason: No such file or directory)
	  Active: inactive (dead)
[root@s2 etc]# systemctl start nss-myhostname
Failed to issue method call: Unit nss-myhostname.service failed to load: No such file or directory. See system logs and 'systemctl status nss-myhostname.service' for details.
[root@s2 etc]# systemctl enable nss-myhostname
Failed to issue method call: No such file or directory
Не надо.
Лучше проверить, давно ли обновлялась система. Судя по-всему, с этим nss-myhostname произошли какие-то изменения с последними обновлениями в systemd. раньше это был отдельный пакет, видимо, а сейчас - часть systemd. И что бы фича работала, вроде бы как она должна быть включена в файле /etc/nsswitch.conf
hosts: files dns myhostname
Проверьте у себя.
Сейчас трудно за всем уследить. В Арче в связи с внедрением systemd все меняется со скоростью света. И по каждому чиху писать багрепорты - дело неблагодарное. В лучшем случае с очередным обновлением все само встанет на место, в худшем - надо чуть-чуть подождать и только тогда писать. IMHO
PS: man nss-myhostname
akorop, в /etc/hostname имя хоста было (правильное)?

П.С.Вики привел к английскому варианту.
vadik
akorop, в /etc/hostname имя хоста было (правильное)?
Да.
akorop, сделайте еще один эксперимент. Приведите /etc/hosts к старому виду, а в /etc/nsswitch.conf, найдите строку hosts: files dns myhostname и замените myhostname на свое реальное имя хоста. Результат какой?
vadik
akorop, сделайте еще один эксперимент. Приведите /etc/hosts к старому виду, а в /etc/nsswitch.conf, найдите строку hosts: files dns myhostname и замените myhostname на свое реальное имя хоста. Результат какой?
Не стоит. myhostname в данном случае - это ключевое слово. Другое дело, что в ситуации, которую описывает ТС, его надо переместить перед dns или вообще впереди, сразу после двоеточия. Иначе таймауты ожидания dns все равно останутся.
UPD: а как все это работает, можно протестировать командой из man nss-myhostname
getent ahosts `hostname`
Чет я туплю...
kurych
vadik
akorop, сделайте еще один эксперимент. Приведите /etc/hosts к старому виду, а в /etc/nsswitch.conf, найдите строку hosts: files dns myhostname и замените myhostname на свое реальное имя хоста. Результат какой?
Не стоит. myhostname в данном случае - это ключевое слово. Другое дело, что в ситуации, которую описывает ТС, его надо переместить перед dns или вообще впереди, сразу после двоеточия. Иначе таймауты ожидания dns все равно останутся.
UPD: а как все это работает, можно протестировать командой из man nss-myhostname
getent ahosts `hostname`
Вернул hosts к старому виду, без своего хоста, - тормоза восстановились.
Обновил систему - тормоза остались.
Переставил myhostname в начало (hosts: myhostname files dns) - тормоза исчезли. А, кстати, почему у этой строки "из коробки" не такой вид? То, что myhostname стоит в конце списка, это для чего-то ещё нужно, кроме генерации торомозов? (Для сравнения: в ubuntu вообще нет myhostname в nsswitch.conf, так что у нас всё круто и динамично, только тормозит.)
Итак, выходит, есть аж два решения: ручная правка hosts или ручная же правка nsswitch.conf. Хрен редьки не слаще.
Кстатит, о самой проблеме. Повторяю, тормоза возникали у меня и при использовании ModemManager, в период времени, когда модем уже соединился с компьютером, но ещё не соединился с интернетом. Это вполне жизненная ситуация. Думаю, всякие wlan-ы тоже могут порождать такие ситупции.
И уж точно, я далеко не первый, кто про тормоза при запуске mc спрашивает. А вот работающий ответ получен, похоже, впервые. Вписать бы его куда-нибудь... Задержка на 20 секунд при запуске mc достаёт очень, даже если бывает редко. Так что, может, всё-таки надо багрепортить?
vadik
akorop, в /etc/hostname имя хоста было (правильное)?

П.С.Вики привел к английскому варианту.
... который неправильный:
Note: Редактировать /etc/hosts нет необходимости.
Необходимость вообще говоря, есть. Или, как альтернатива, есть необходимость редактировать /etc/nsswitch.conf.
 
Зарегистрироваться или войдите чтобы оставить сообщение.