是否可以在Puppet中指定将rpm用于与主机操作系统不同的操作系统?

时间:2016-05-09 21:21:23

标签: package puppet rpm yum

我的机器运行的操作系统不受支持(rhel6.3)。它不再具有访问当前回购的权限,并且由于预算原因无法更新。

它需要更新tzdata,但它可以访问的唯一版本是2014年。

tzdata是一个noarch包 - 它只是一堆二进制文件 - 所以如果我从另一个repo中获取它并不重要,比如我们当地的yum repo,它有最新的tzdata包其他操作系统,如centos7。

我知道我可以简单地在rhel机器上本地下载并放置最新的tzdata rpm,但我希望这个过程自动化 - 就像在,Puppet检查tzdata是最新版本 - 而不是必须每当更新tzdata时手动将其放置到位。

Puppet是否可以指定,使用此repo,但是使用为另一个操作系统指定的rpm?

1 个答案:

答案 0 :(得分:0)

  

tzdata是一个noarch包 - 它只是一堆二进制文件 - 所以如果我从另一个repo中获取它并不重要,比如说,我们的本地yum repo有其他操作系统的最新tzdata包,比如centos7。

作为一个noarch包没有这样的含义。 “Noarch”软件包独立于机器架构,但不一定是OS版本。例如,许多Python包都是noarch,但EL6中的Python2是2.6版,而EL7中的Python2是2.7版。如果EL7的Noarch Python包依赖于Python 2.7中引入的任何功能,它们在EL6上无法正常工作。如果它们包装得很好,那么这些包甚至不会安装在EL6上。

我怀疑你特别对tzdata感到满意,但总是有可能对打包文件的格式进行了更改或添加,这使得它们在旧的OS版本上无法使用。但是,如果您使用的是CentOS 6.7软件包,而不是任何EL7软件包,那么您应该非常安全。

  

Puppet是否可以指定,使用此repo,但是使用为另一个操作系统指定的rpm?

同一个Yum仓库中的软件包不能通过操作系统或操作系统版本区分。在不同的OS风格或版本必须为不同的包集合提供服务的程度和范围内,通过给予它们完全不同的repos来完成。所以不,没有办法像你描述的那样专门指导Puppet,因为没有办法以这种方式指示yum

另一方面,如果您在目标计算机上启用了本地存储库,那么您确实可以将为其他基于RPM的发行版[版本]构建的程序包放入该存储库中。客户端将看到它,并将根据其名称和epoch-version-release代码(尝试)在适当的时候使用它。你不需要做任何特别的事情来实现这一点。

第三方面,您还可以考虑获取所需tzdata版本的源RPM,在EL6.3计算机上从中构建二进制RPM,并在本地删除 回购。您可以从Koji获取Fedora和RHEL的各种源(和二进制)RPM。