วิธีเปลี่ยนชื่อโฮสต์อย่างถาวรใน 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ด้วยตนเอง

ฉันยังควรทราบว่านี้เป็นสมบูรณ์ฟางหุ้น ฉันยังไม่ได้ติดตั้งแอพหลักของฉันเลย


สิ่งนี้มีข้อมูลที่คล้ายกันเกี่ยวกับปัญหาเช่นกัน: ask.fedoraproject.org/en/question/37413/ … & สิ่งนี้: dbaora.com/install-fedora-20
slm

อันที่จริงนี่คือหนึ่งในแหล่งที่มาของฉัน แต่ไม่มีการแก้ปัญหาที่ผมสามารถดึงจากหน้าที่ทำงาน ...
PythonNut

คุณติดตั้ง / ตั้งค่าระบบนี้เมื่อเร็ว ๆ นี้ได้อย่างไร? มีปัญหาเกิดขึ้นตั้งแต่การติดตั้งหรือไม่? ยังมีข้อผิดพลาดใด ๆ ที่มีhostnamectlคำสั่งเหล่านั้นหรือไม่ ลิงก์ไปยังข้อผิดพลาด bugzilla ที่บางสิ่งบางอย่างที่โพสต์ดูเหมือนว่าจะนำคุณไปได้
slm

ฉันติดตั้งใน 10/1/14 และตั้งแต่นั้นhostnamectlคำสั่งไม่ทำงาน แต่ตอนนี้พวกเขาทำ
PythonNut

ข้อผิดพลาดที่เชื่อมโยงกับโซลูชันที่ได้รับการยอมรับเป็นเพียงช่วงเวลาที่โชคร้ายสำหรับคุณ พวกเขาได้แก้ไขต้นน้ำและควรหาทางออกสำหรับผู้ใช้ในอนาคต
slm

คำตอบ:


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 คือพบได้ที่นี่หัวข้อ: Bug 1,133,368 - SELinux จะป้องกันไม่ให้ systemd-hostnam จาก 'ยกเลิกการเชื่อมโยง' การเข้าถึงในชื่อโฮสต์ไฟล์

ข้อผิดพลาดนี้ดูเหมือนว่าจะเกี่ยวข้อง มีปัญหากับบริบทของ SELinux ที่ไม่ได้ใช้อย่างถูกต้องกับไฟล์/etc/hostnameเมื่อทำการติดตั้ง สิ่งนี้ปรากฏในเครื่องมือที่hostnamectlไม่สามารถจัดการไฟล์/etc/hostnameได้ หัวข้อเดียวกันนี้เสนอวิธีแก้ปัญหานี้:

$sudo restorecon -v /etc/hostname

หมายเหตุ:แพทช์นั้นถูกนำไปใช้กับ Anaconda (เครื่องมือติดตั้ง) เพื่อที่ว่าปัญหานี้จะหายไปในอนาคตสำหรับผู้ใช้ใหม่


3

สาเหตุที่เป็นไปได้คือไคลเอนต์ dhcp ของคุณ หากคุณใช้ dhcpcd ซึ่งเป็นเรื่องปกติวิธีแก้ไขคือเพิ่มบรรทัดต่อไปนี้/etc/dhcpcd.conf:

nohook hostname

สิ่งนี้จะป้องกัน dhcpcd ไม่ให้เรียกใช้สคริปต์ซึ่งเปลี่ยนชื่อโฮสต์ระบบของคุณ

โดยค่าเริ่มต้น dhcpcd จะเรียกใช้ hooks ทั้งหมดที่มีอยู่/lib/dhcpcd/dhcpcd-run-hooks(เส้นทางอาจแตกต่างกันในระบบของคุณ) ใช้nohookปิดการใช้งานเฉพาะคน


1
สำหรับการติดตั้งทั้ง 21 และ rawhide ของฉัน/etc/dhcpd.confไม่มีอยู่ นอกจากนี้systemctl status dhcpcdผลตอบแทนnot-found (Reason: No such file or directory)
PythonNut
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.