在虚拟化 Red Hat 服务器群中,出于安全原因,需要安装最小系统。最小安装有几个优点(甚至与安全无关):
- 减少漏洞风险(如果不需要,就不要安装)
- 更好的更新过程(需要更新的软件包更少,系统崩溃的可能性更小)
- 性能更佳(没有不必要的守护进程或进程)
- 软件越少,系统越容易强化
不幸的是,这并不容易,因为 Red Hat 上的“最小安装”包含许多不必要的包。
由于服务器场运行的是 Oracle iAS,因此还有一个额外的挑战。我听说 iAS 与本地图形环境有依赖关系。因此,服务器场中的每台服务器最终都具有 gnome、X 等。
我在网上搜索过,似乎有一个解决方案是制作一个只安装必要软件包的 kickstart 脚本。但我发现这很困难,而且我对之后如何维护系统依赖关系有几个疑问。
如何安装最小 Red Hat 服务器?使用 kickstart 可以吗?还是在安装或更新时会出现依赖性问题?有没有办法避免安装 iAS 的图形环境?
答案1
我在网上搜索过,似乎有一个解决方案是制作一个 kickstart 脚本,只安装必要的软件包。但我发现这很困难,而且我对之后如何维护系统依赖关系有几个疑问。
制作 kickstart 文件并不难:在已安装的服务器之一的 /root 中查找名为 anaconda-ks.cfg 的文件。这是一个 kickstart 文件,用于使新服务器看起来像现有服务器。每个 RH、Fedora 或 CentOS 服务器都有该文件。
如果您不熟悉编写 kickstart 文件,则可以编辑 system-config-kickstart 中的文件。不过您需要 X。
如何安装最小 Red Hat 服务器?使用 kickstart 可以吗?安装或更新时是否会遇到依赖性问题?有没有办法避免安装 iAS 的图形环境?
使用 kickstart 文件,您做得不错。Kickstart 会影响您安装后的更新方式。在安装过程中,依赖项会自动计算。您删除的(如果可能的话)但无论如何都需要的软件包都会被添加。您无法安装依赖项已损坏的系统对于系统。但是 Oracle 的依赖关系则完全是另一回事。
如果 Oracle 需要图形环境(它确实需要,我知道这很糟糕,但它确实需要),您别无选择,只能安装 X。但是,据我所知,Oracle 需要 X,因为它有一个图形安装程序。之后您不需要 X。因此,安装后,您可以删除 X。
在我的商店中,我们只安装了一组非常小的 X 库。刚好足以运行 xclock(以及安装程序)远程使用 X 转发。这就足够了。
Oracle 有更多疯狂的依赖关系。Oracle 安装程序需要一些古老的 C 库兼容包。不是因为它真的需要它们,而是因为他们发布的 zip 实现需要它们。他们为什么要发布那个 zip 实现?有传言说,Oracle 发布的非常古老的 zip 实现具有更优惠的许可条款(例如:它不是 GPL 的),所以他们拒绝使用较新的实现。不过只是传言,从未得到证实……
答案2
KIckstart 很好。如果您想确保某些软件包未安装,您可以在要安装的软件包/组列表中列出它们,并在前面加上减号(“-”)。
例如
%packages
@base
core-utils
-httpd
确保 apache 未安装
然后在 %post 部分,您可以运行命令,例如chkconfig
关闭您不想要的服务 - 以及执行任何其他您想做的事情来加强您的安装。
答案3
事实上,您的问题不是 RedHat,而是 Oracle 依赖性。
正如之前的发帖者所说,Oracle 依赖关系很疯狂,主要链接到糟糕的安装程序,而不是产品本身。
您需要将问题分为两部分:
- 使用 kickstart 文件创建最小的 RedHat 安装,它将在您的硬件上运行,并根据 Oracle IAS 先决条件生成文件系统。
- 创建一个脚本/包,它将安装 Oracle 安装程序所需的包,使用响应文件安装 Oracle,然后卸载不需要的包。
第二部分是最困难的,您需要花一些时间从 oracle pre-req 中确定什么是真正需要的,什么只是一个愚蠢的依赖关系。
但完成后,您可以自动化安装,并对所有系统进行最低限度的维护。
答案4
我回答了另一个老问题,因为我昨天在这个问题上花了不少时间。我希望 Red Hat 能够安装最少数量的软件包,以用于特殊用途的服务器。
似乎在最新版本中,即使您没有在部分中指定单个包,也会默认安装%packages
该组。@base
这安装的软件包和服务比我在某些系统上维护的多得多。
然后我%packages --nobase
发现CentOS Kickstart/Anaconda 维基。这确实是 Red Hat 发行版的最小安装。您会发现许多您习惯并依赖的命令都缺失了。但是,如果您想要一个最小的起点,这就是它了。