如何用centos6.5中的yum版本replace自编译包(php,mysql,memcahed)

我至less有5个开发服务器(开发,质量保证,分期)有PHP和其他包从源编译的软件包。 我想删除所有这些,并用yum包更新这些服务器。 如果我可以通过傀儡或厨师做到这一点,将是伟大的。 所以:

  1. 我如何开始寻找自编译的软件包并删除它们?
  2. 稍后通过yum在服务器上安装相同包的更新版本?
  3. 木偶/厨师是一个很好的select来模拟服务器的变化?

我如何开始寻找自编的软件包

没有什么好的方法可以保证你能得到所有的东西

  • 请查阅您的configuration文档。
  • 请参阅您的构build文档。
  • 在通常的地方查看(/ usr / bin,/ usr / local / bin等)

但是没有什么好的办法可以保证你能得到所有的东西

并删除它们

这是不平凡的,除非包裹有自己的方式去除。 您可以尝试重新编译软件包,然后使用chroot重新安装它们,或者如果DESTDIR = drective

mkdir /tmp/package make && make install DESTDIR=/tmp/package 

然后查看/ tmp / package或chroot树的内容以获取文件列表,然后可以使用该列表从主文件系统树中删除文件。 这是依赖于你知道你用来configuration构build的选项。

稍后通过yum在服务器上安装相同包的更新版本?

 yum install packagename 

木偶/厨师是一个很好的select来模拟服务器的变化?

此时您的最佳解决scheme是重新开始。 select一个configurationpipe理解决scheme,并使用它来build立一致的系统

然后安装你的基本操作系统

  • 使用您的configurationpipe理解决scheme来添加和configuration软件包
  • 运行你的testing
  • 如果testing失败
    • 找出原因
    • 更新configurationpipe理
  • 冲洗并重复,直到testing通过

不幸的是,清理这种情况并不容易。 无论如何,以下几点:

  1. 做一个你认为是手动安装的清单,这将是有用的
  2. 自编的软件包通常位于/ usr / local,/ opt和其他非默认目录中。 看看这些目录,看看手动安装
  3. 手动安装发现后,通过yum / rpm安装官方软件包。 它们将被安装在/ bin,/ usr / bin和其他默认目录中,所以它们应该是调用可执行文件时的首选程序(例如:/ usr / bin / php应该优先于/ usr / local / bin / php) 。 无论如何,检查你的PATHvariables
  4. 请记住,官方软件包将安装受影响软件的不同版本(可能较旧)。 如果您的应用程序依赖于特定的软件包版本,他们可能会有问题(例如:如果您使用最近的Joomla安装,请注意它至less需要PHP 5.3.10+,而CentOS提供的是5.3.3)
  5. 不会使用自动configuration脚本/方法来执行此活动。 它确实需要人工干预,至less是第一台服务器。

假如你有编译的源代码(我倾向于保留它们),今天的许多软件包都支持卸载目标。 只要make uninstall并希望正确的文件将被删除。 如果你周围没有他们,重新编译并安装,然后卸载。 只要确保你有相同的版本。

如果这不起作用,您可能需要尝试安装发行版软件包,并使用rpm来手动search不属于任何软件包的文件。 只要确保所有以前的文件被覆盖。