我正在使用 CentOS(7.2),我需要从源代码编译一些工具以在服务器上获得一些新功能。我可以使用源代码编译,但使用 yum 时遇到问题。让我们看看使用 GIT 的示例。
如果你尝试,yum install git
你将获得 GIT 1.8.3.1。我需要更新的版本,例如 2.10。我正在遵循 git 页面上的教程https://git-scm.com/book/en/v2/Getting-Started-Installing-Git这里。
如果你安装了编译 git 所需的工具,你会注意到其中一个依赖项是 git 本身。因此,在编译新版本之前,你实际上已经安装了 git。编译后,所需的版本可用(2.10)
一切都很好,但我遇到了几个问题。假设 CentOS 存储库中有更新版本的 GIT。因此,yum update git
我的编译版本将被替换为 1.9。我想防止这种情况发生。
我的第一个想法是添加exclude git*
它yum.conf
,这样可以解决更新问题,但它有两个缺点:
- 您仍然可以这样做
yum remove git
,它将删除 git 2.10(相同的文件位置)。 - 如果您尝试将git 作为依赖
yum install X
项X
,则将无法安装它:/
问题- 如何使用从源代码编译的软件包的信息来更新 yum?
我可以做的一件事是为 git 构建空的 RPM 并将其添加到 yum。这样 yum 就会有关于我编译的版本的信息。但是我不确定这是否是好的解决方案?
我想就这种情况征求一些意见和想法。请不要严格参考 GIT,它可以是任何其他包,例如 nginx 或 PHP。
任何帮助,将不胜感激!
答案1
我会卸载 git 包编译后(传统上,该步骤使用make
命令执行,但查看 Git 指南时,您提到它使用make all doc info
),但安装前(sudo make install install-doc install-html install-info
或针对相关软件的类似命令,用于安装已编译的内容)。或者只需在之后重新运行安装命令即可dnf remove git
。
希望我没有遗漏您的问题中的任何内容。
还有一个警告:你需要确保你真的知道自己在做什么 - 你基本上是通过这种方式忽略了你的发行版的及时更新(例如出于安全原因)(添加这一点是因为你提到过例如 php 可能经常是攻击媒介。