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

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

我想摆脱旧版本,但是如果我要运行“yum erase sqlite”,那将会摧毁依赖于SQLite的几件事情。 有没有办法告诉软件包pipe理器使用我安装的版本,而不必为创build一个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 

我会使用RPM来删除只是sqlite 3.3.6和没有依赖关系:

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

这应该保持你的依赖,但是删除你的RPM包。 此外,请确保您的$PATH/usr/local/bin/

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

这当然看起来很简单,但是你继续提到你现在遇到的问题。

“…不用为创build一个RPM的麻烦?”

现在学习如何创buildRPM的时间。 除非通过操作系统打包系统安装软件,否则您将无止境地陷入困境。

在这种情况下,它可能会像获取spec文件,颠覆版本号以及决定补丁是否仍然适用于新版本一样简单。

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

我也经历过同样的问题。 但是在退出并开始一个新的腻子会议窗口,它工作正常。 它返回最新版本。 在我的情况下,它是v3.7.3。

 # sqlite3 -version 3.7.3 

你需要sqlite 3.6的? 如果你只是需要它作为一个命令行应用程序,那么就像你所做的那样从源代码安装它是好的,它只会像你发现的那样安装在/usr/local/bin中。

您的PATHvariables将确定是/usr/local/bin还是/usr/bin首先search(基于该variables中path的顺序)。 如果这只是为了您的使用,您也可以安装在您的HOME目录的子目录中的较晚的SQLite并将其添加到您的path。

这里最简单的解决方法就是调用/usr/local/bin/sqlite3

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