如何为 Debian Jessie 系统设置主机名?

don*_*llo 19 debian hostname systemd

Debian Jessie 带有systemd. 设置主机名的建议是对 systemd 使用 hostnamectl。但是,此命令在 EC2 上启动的 Debian Jessie映像上不起作用(甚至无法显示当前主机名):

sudo hostnamectl
sudo: unable to resolve host ip-172-30-0-17
Failed to create bus connection: No such file or directory
Run Code Online (Sandbox Code Playgroud)

所以我尝试在这里继续使用 Debian 的推荐。

echo "myhostname" > /etc/hostname
echo "127.0.0.1 myhostname" >> /etc/hosts
/etc/init.d/hostname.sh start
/etc/init.d/networking force-reload
Run Code Online (Sandbox Code Playgroud)

但是,注销并重新登录后,主机名不会更改。然而,它在重新启动后会发生变化,但这对我来说并不理想。

这种方法曾经在 Debian Wheezy 中工作。

任何有关正确处理的帮助表示赞赏。

don*_*llo 33

发现问题了。EC2 上用于 Debian Jessie 的基础 AMI 没有安装 dbus。hostnamectl 似乎需要 dbus。所以解决方法是:

apt-get update && apt-get install -y dbus
Run Code Online (Sandbox Code Playgroud)

进而:

hostname=myname
echo "127.0.0.1      $hostname" >> /etc/hosts
hostnamectl set-hostname "$hostname"
echo "$hostname" > /etc/hostname # uneeded
Run Code Online (Sandbox Code Playgroud)

这奏效了。

  • 很好地了解 dbus 依赖项。仅供参考:我一直在学习如何配置 systemd 系统并发现 `hostnamectl set-hostname myhostname` 会自动更新 `/etc/hostname`(静态主机名)的内容,因此不需要第一个 `echo` 命令。 (3认同)