Как навсегда изменить имя хоста в Fedora 21

35

Я слышал, что изменение имени хоста в новых версиях fedora выполняется hostnamectlкомандой. Кроме того, я недавно (и успешно) изменил свое имя хоста в Arch Linux с помощью этого метода. Однако при запуске:

[root@localhost ~]# hostnamectl set-hostname --static paragon.localdomain
[root@localhost ~]# hostnamectl set-hostname --transient paragon.localdomain
[root@localhost ~]# hostnamectl set-hostname --pretty paragon.localdomain

Изменения не сохраняются после перезагрузки (вопреки утверждениям многих людей, что это делает). Что не так?

  • Я действительно не хочу редактировать /etc/hostnameвручную.

Следует также отметить, что это полностью стоковая федора. Я даже не удосужился установить свои основные приложения.

PythonNut
источник
Это был подобная информация о проблеме, а также : ask.fedoraproject.org/en/question/37413/... & это: dbaora.com/install-fedora-20
ОДС
Действительно, это один из моих источников. Однако ни одно из решений, которые я смог извлечь из этой страницы, не сработало ...
PythonNut
Как недавно вы установили / настроили эту систему? Проблема присутствовала с момента установки? Также есть ли ошибки с этими hostnamectlкомандами? Ссылка на ошибку bugzilla, которую что-то опубликовало, кажется вам лучшим лидером.
SLM
Я установил 01.10.14, и с тех пор hostnamectlкоманды не работали, но теперь они работают.
PythonNut
Ошибка, связанная с принятым решением, была для вас просто неудачным выбором. Они исправили это вверх по течению, и это должно найти выход для будущих пользователей.
СЛМ

Ответы:

39

Команда для установки имени хоста определенно hostnamectl.

root ~ # hostnamectl set-hostname --static "YOUR-HOSTNAME-HERE"

Вот еще один источник, который описывает эту функцию немного под названием: Правильная установка имени хоста - Fedora 20 на Amazon EC2 .

Дополнительно справочная страница для hostnamectl:

HOSTNAMECTL(1)                    hostnamectl                   HOSTNAMECTL(1)

NAME
       hostnamectl - Control the system hostname

SYNOPSIS
       hostnamectl [OPTIONS...] {COMMAND}

DESCRIPTION
       hostnamectl may be used to query and change the system hostname and
       related settings.

       This tool distinguishes three different hostnames: the high-level
       "pretty" hostname which might include all kinds of special characters
       (e.g. "Lennart's Laptop"), the static hostname which is used to
       initialize the kernel hostname at boot (e.g. "lennarts-laptop"), and
       the transient hostname which is a default received from network
       configuration. If a static hostname is set, and is valid (something
       other than localhost), then the transient hostname is not used.

       Note that the pretty hostname has little restrictions on the characters
       used, while the static and transient hostnames are limited to the
       usually accepted characters of Internet domain names.

       The static hostname is stored in /etc/hostname, see hostname(5) for
       more information. The pretty hostname, chassis type, and icon name are
       stored in /etc/machine-info, see machine-info(5).

       Use systemd-firstboot(1) to initialize the system host name for mounted
       (but not booted) system images.

В Fedora 21 есть ошибка, из-за которой SELinux запрещает доступ hostnamectl, найденный здесь, под названием: Ошибка 1133368 - SELinux препятствует доступу systemd-hostnam к unlink для имени файла .

Эта ошибка, кажется, связана. Существует проблема с неправильным применением контекстов SELinux к файлу /etc/hostnameпри установке. Это проявляется в том, что инструмент hostnamectlне может манипулировать файлом /etc/hostname. Тот же поток предложил этот обходной путь:

$sudo restorecon -v /etc/hostname

ПРИМЕЧАНИЕ. Эти исправления были применены к Anaconda (инструменту установки), чтобы эта проблема в будущем исчезла для новых пользователей.

что-то что-то
источник
3

Вероятной причиной этого является ваш клиент DHCP. Если вы используете dhcpcd, что является распространенным решением, добавьте следующую строку /etc/dhcpcd.conf:

nohook hostname

Это не позволяет dhcpcd вызывать скрипт, который меняет имя вашего системного хоста.

По умолчанию dhcpcd запускает все имеющиеся хуки /lib/dhcpcd/dhcpcd-run-hooks(путь может отличаться в вашей системе). Использование nohookотключает определенные.

Патрик
источник
1
Как для моих 21, так и для установки из сыромятной кожи /etc/dhcpd.confне существует. Кроме того, systemctl status dhcpcdвозвращаетсяnot-found (Reason: No such file or directory)
PythonNut