centos6.5中如何用yum版本替换自编译包(php、mysql、memcahed)

centos6.5中如何用yum版本替换自编译包(php、mysql、memcahed)

我至少有 5 个开发服务器(dev、QA、staging),其中有从源代码编译的 php 和其他包。我想删除所有这些服务器,并使用 yum 包更新这些服务器。如果我可以通过 puppet 或 chef 做到这一点,那就太好了。所以:

  1. 我如何开始寻找自编译的软件包并将其删除?
  2. 稍后在服务器上通过 yum 安装相同软件包的更新版本?
  3. puppet/chef 是用于模拟服务器变化的好选择吗?

答案1

我如何开始寻找自编译的包

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

  • 查阅您的配置文档。
  • 查阅您的构建文档。
  • 在常见位置查找(/usr/bin、/usr/local/bin 等)

但实际上没有一个好的方法可以保证你能得到它们

并移除它们

除非软件包附带了删除自身的方法,否则这并非易事。您可以尝试重新编译软件包,然后使用 chroot 或 DESTDIR= 指令重新安装它们

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

然后查看 /tmp/package 或 chroot 树的内容以获取文件列表,然后可以使用该文件列表从主文件系统树中删除文件。不过,这取决于您是否了解用于配置构建的选项。

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

yum install packagename

puppet/chef 是用于模拟服务器变化的好选择吗?

此时,最好的解决方案是重新开始。选择一个配置管理解决方案并使用它来构建一致的系统

然后安装基本操作系统

  • 使用配置管理解决方案添加和配置包
  • 运行测试
  • 如果测试失败
    • 找出原因
    • 更新配置管理
  • 冲洗并重复,直到测试通过

答案2

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

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

答案3

只要你还有编译好的源代码(我自己会保留它们),今天的很多软件包都支持卸载目标。只是make uninstall希望删除正确的文件。如果您没有它们,请重新编译并安装,然后卸载。只需确保您拥有相同的版本。

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

相关内容