从源代码安装已安装 RPM 的较新版本(CentOS)

从源代码安装已安装 RPM 的较新版本(CentOS)

我已经通过“yum”安装了 sqlite 3.3.6,但我需要 3.6+。找不到它的 RPM,所以我决定从源代码安装。这很简单,但现在我安装了两个版本,这很成问题。

我想删除旧版本,但如果我运行“yum erasure sqlite”,这将删除依赖于 SQLite 的几个东西。有没有办法告诉包管理器使用我安装的版本,而不用费心为其创建 RPM?

另外,有人能解释一下我从源代码安装 3.7.0.1 之后这种令人困惑的交互吗(编辑:请参阅下面 gnaman 的回答):

> sqlite3 -version
3.3.6
> which sqlite3
/usr/local/bin/sqlite3
> /usr/local/bin/sqlite3 -version
3.7.0.1

答案1

我将使用 RPM 来删除所有sqlite 3.3.6依赖项:

rpm -e –nodeps name-of-rpm-for-sqlite3.3.6

这应该会保留您的依赖项,但会删除您的 RPM 包。此外,请确保您/usr/local/bin/$PATH.

答案2

没有找到它的 RPM,所以我决定从源代码安装。这很简单...

当然似乎很简单,但你接着提到你现在遇到的问题。

“...不用费心为其创建 RPM 吗?”

现在是学习如何创建 RPM 的时候了。除非您通过操作系统打包系统安装软件,否则您将会遇到无穷无尽的麻烦。

在这种情况下,它可能很简单,只需获取规范文件、增加版本号,然后决定补丁是否仍然适用于新版本。

答案3

Also, could someone explain this baffling interaction from after I installed 3.7.0.1 from source:

我也遇到了同样的问题。但退出并启动新的 Putty 会话窗口后,它工作正常。它返回最新版本。在我的情况下,它是 v3.7.3。

# sqlite3 -version
3.7.3

答案4

您需要 sqlite 3.6 做什么?如果您只是需要它作为命令行应用程序,那么像您所做的那样从源代码安装它就可以了,它会/usr/local/bin按照您发现的方式安装。

您的PATH变量将确定是否首先搜索/usr/local/bin/usr/bin(基于该变量中的路径顺序)。如果这仅供您使用,您还可以将后者的 sqlite 安装在目录的子目录中HOME,并将其添加到您的路径中。

最简单的解决方案就是打电话/usr/local/bin/sqlite3

如果您需要更广泛地使用 SQLite,请小心... 原因是解决依赖性问题/重新编译其他库或也使用 sqlite 库的应用程序。如果您不解决这些问题,您不知道它们是否会起作用。

相关内容