Jak trwale zmienić nazwę hosta w Fedorze 21

35

Słyszałem, że zmiana nazwy hosta w nowych wersjach fedory odbywa się za pomocą hostnamectlpolecenia. Ponadto niedawno (z powodzeniem) zmieniłem nazwę hosta w Arch Linux za pomocą tej metody. Jednak podczas uruchamiania:

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

Zmiany nie są zachowywane po ponownym uruchomieniu komputera (w przeciwieństwie do twierdzeń wielu osób, że tak się dzieje). Co jest nie tak?

  • I naprawdę nie chcesz edytować /etc/hostnameręcznie.

Powinienem również zauważyć, że jest to fedora całkowicie magazynowa. Jeszcze nie udało mi się zainstalować moich podstawowych aplikacji.

PythonNut
źródło
Zawierał również podobne informacje dotyczące problemu: ask.fedoraproject.org/en/question/37413/… i ten: dbaora.com/install-fedora-20
slm
Rzeczywiście, jest to jedno z moich źródeł. Jednak żadne z rozwiązań, które mogłem wydobyć z tej strony, nie działało ...
PythonNut,
Jak ostatnio instalowałeś / konfigurowałeś ten system? Czy problem występuje od momentu instalacji? Czy są też jakieś błędy związane z tymi hostnamectlpoleceniami? Link do błędu bugzilli, który coś opublikował, wydaje się być najlepszym tropem.
slm
Zainstalowałem 10/1/14 i od tego czasu hostnamectlpolecenia nie działały, ale teraz działają.
PythonNut
Błąd związany z przyjętym rozwiązaniem był dla ciebie po prostu niefortunnym momentem. Naprawili go na początku i powinien być dostępny dla przyszłych użytkowników.
slm

Odpowiedzi:

39

Polecenie, aby ustawić nazwę hosta jest zdecydowanie, hostnamectl.

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

Oto dodatkowe źródło, które bardziej szczegółowo opisuje tę funkcję, zatytułowane: Prawidłowe ustawienie nazwy hosta - Fedora 20 na Amazon EC2 .

Dodatkowo strona podręcznika dla 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.

W Fedorze 21 występuje błąd, w którym SELinux uniemożliwia dostęp do nazwy hosta, znaleziony tutaj, zatytułowany: Błąd 1133368 - SELinux uniemożliwia systemd-nazwa hosta dostępowi do „odłączenia” nazwy hosta pliku .

Ten błąd wydaje się być powiązany. Wystąpił problem z nieprawidłowym zastosowaniem kontekstów SELinux do pliku /etc/hostnamepodczas instalacji. Przejawia się to w tym, że narzędzie hostnamectlnie może manipulować plikiem /etc/hostname. Ten sam wątek oferował to obejście:

$sudo restorecon -v /etc/hostname

UWAGA: Poprawki zostały zastosowane w Anaconda (narzędziu instalacyjnym), dzięki czemu ten problem powinien zniknąć w przyszłości dla nowych użytkowników.

coś tam coś tam
źródło
3

Prawdopodobną przyczyną tego jest twój klient dhcp. Jeśli używasz dhcpcd, co jest powszechne, rozwiązaniem jest dodanie następującego wiersza /etc/dhcpcd.conf:

nohook hostname

Zapobiega to wywoływaniu przez dhcpcd skryptu, który zmienia nazwę hosta systemu.

Domyślnie dhcpcd uruchamia wszystkie obecne haki /lib/dhcpcd/dhcpcd-run-hooks(ścieżka może się różnić w systemie). Użycie nohookwyłącza określone.

Patrick
źródło
1
Zarówno dla moich instalacji 21, jak i rawhide, /etc/dhcpd.confnie istnieje. Ponadto systemctl status dhcpcdzwracanot-found (Reason: No such file or directory)
PythonNut