我们的服务器运行 CentOS 4.9。我想了解/etc/hosts
安装过程中如何创建文件。
这里有一个相关问题(什么创建了 /etc/hosts (RHEL 5.5))表示在 RHEL 5 中/etc/hosts
文件是由 ananconda 创建的。
我们用anaconda-10.1.1.46-4.x86_64.rpm
。我提取了这个 RPM 并找到了一个文件/usr/lib/anaconda/network.py
。此 Python 文件创建该/etc/hosts
文件。
读完这个 python 脚本后,我可以看到localhost.localdomain
应该在文件中添加域别名/etc/hosts
。
但在安装过程中我可以看到该/etc/hosts
文件是用 only 创建的。
127.0.0.1 loghost
我们还有一个ks.cfg
文件,它创建/etc/hosts
包含以下内容的文件
127.0.0.1 localhost loghost
因此,安装并重新启动后,/etc/hosts
将按照文件中的指定创建该文件ks.cfg
。
我在这里有点困惑如何/etc/hosts
仅在安装过程中创建文件127.0.0.1 loghost
。
编辑:
注意:我们将应用程序 RPM 与 CentOS rpm 捆绑在一起并构建 ISO。
真正的问题是我们正在从 CentOS 4.9 迁移到 6.5。在 CentOS 6.5 setup-2.8.14-20 rpm 中创建包含以下内容的主机文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
localhost.localdomain
添加到hosts文件中。
因此,我们试图找出/etc/hosts
安装过程中 CentOS 4.9 和 6.5 文件创建之间的差异,因为我们的应用程序与文件中的条目紧密绑定/etc/hosts
。
答案1
我不确定您所问问题的答案,但我认为我已经解决了您真正的问题。
/etc/hosts
您可以将所需的条目附加到末尾,而不是简单地写出一个新文件(可能会覆盖已经存在的文件)。两者之间没有功能差异:
127.0.0.1 localhost loghost
和
127.0.0.1 localhost
127.0.0.1 loghost
也就是说,您不需要收集同一行上 127.0.0.1 的所有名称。您只需在一行中添加loghost
所需的条目即可后Anaconda 创建库存版本。
由于您是从您创建的 RPM 执行此操作,因此这意味着您将当前修改或创建的方式替换/etc/hosts
为 RPM%post
脚本中类似的内容:
if ! grep -q loghost /etc/hosts
then
echo '127.0.0.1 loghost' >> /etc/hosts
fi