Cara mengubah nama host secara permanen di Fedora 21

35

Saya pernah mendengar bahwa mengubah nama host di versi fedora baru dilakukan dengan hostnamectlperintah. Selain itu, saya baru-baru ini (dan berhasil) mengubah nama host saya di Arch Linux dengan metode ini. Namun, saat menjalankan:

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

Perubahan tidak dipertahankan setelah reboot (bertentangan dengan klaim banyak orang bahwa itu). Apa yang salah?

  • Saya benar - benar tidak ingin mengedit /etc/hostnamesecara manual.

Saya juga harus mencatat bahwa ini adalah fedora yang sepenuhnya lengkap . Saya bahkan belum sempat menginstal aplikasi inti saya.

PythonNut
sumber
Ini memiliki info serupa mengenai masalah ini juga: ask.fedoraproject.org/en/question/37413/… & ini: dbaora.com/install-fedora-20
slm
Memang, ini adalah salah satu sumber saya. Namun, tidak ada solusi yang dapat saya ekstrak dari halaman yang berfungsi ...
PythonNut
Seberapa baru Anda menginstal / mengatur sistem ini? Apakah masalah sudah ada sejak instalasi? Apakah ada kesalahan dengan hostnamectlperintah itu? Tautan ke bug bugzilla yang kadang-kadang diposting sepertinya adalah petunjuk terbaik Anda.
slm
Saya menginstal pada 10/1/14, dan sejak itu hostnamectlperintah tidak bekerja, tetapi sekarang mereka lakukan.
PythonNut
Bug yang ditautkan dalam solusi yang diterima hanyalah waktu yang tidak menguntungkan bagi Anda. Mereka telah memperbaikinya di bagian hulu dan harus mencari jalan keluar bagi pengguna di masa depan.
slm

Jawaban:

39

Perintah untuk mengatur nama host sudah pasti hostnamectl,.

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

Berikut adalah sumber tambahan yang menjelaskan fungsi ini sedikit lebih banyak, berjudul: Mengatur hostname dengan benar - Fedora 20 di Amazon EC2 .

Selain itu halaman manual untuk 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.

Ada bug di Fedora 21 di mana SELinux mencegah akses hostnamectl, ditemukan di sini, berjudul: Bug 1133368 - SELinux mencegah systemd-hostnam dari akses 'batal tautan' pada nama host file .

Bug ini sepertinya terkait. Ada masalah dengan konteks SELinux yang tidak diterapkan dengan benar ke file /etc/hostnamesetelah instalasi. Ini memanifestasikan dalam alat hostnamectltidak dapat memanipulasi file /etc/hostname. Utas yang sama menawarkan solusi ini:

$sudo restorecon -v /etc/hostname

CATATAN: Tambalan itu diterapkan pada Anaconda (alat instalasi) sehingga masalah ini akan hilang di masa mendatang bagi pengguna baru.

sesuatu Sesuatu
sumber
3

Kemungkinan penyebabnya adalah klien dhcp Anda. Jika Anda menggunakan dhcpcd, yang umum, solusinya adalah menambahkan baris berikut ke /etc/dhcpcd.conf:

nohook hostname

Ini mencegah dhcpcd dari memanggil skrip yang mengubah nama host sistem Anda.

Secara default, dhcpcd menjalankan semua hook yang ada /lib/dhcpcd/dhcpcd-run-hooks(path mungkin berbeda pada sistem Anda). Menggunakan nohookmenonaktifkan yang spesifik.

Patrick
sumber
1
Untuk kedua 21 saya dan menginstal kulit mentah, /etc/dhcpd.conftidak ada. Selain itu, systemctl status dhcpcdkembalinot-found (Reason: No such file or directory)
PythonNut