在/ usr中跟踪Linux上定制软件安装的最佳实践?

我正在Linux上编译和安装软件(Debian Squeeze)。 下载,解,安装依赖的开发库/头文件,运行configure然后make。

到目前为止,所有东西仍然保留在源代码目录中。 一旦我运行make install ,基本上我开始将非包文件放在/usr/local/usr (取决于--path开关)。

我也试着把它安装到不同的地方,例如/opt ,但是这经常会在某个地方引起麻烦。 即我一直记得专门添加到标题/链接器path。 或者我在那里安装一个软件包,系统范围的pkg-config不知道它(我再次需要添加额外的标志)。 即使我将安装每个自定义软件/opt ,我不知道在bin/ ,etc lib/等所有这些文件属于彼此。 如果我开始将它们安装到/opt/software1/ ,维护问题只是增加了,我必须跟踪更多的path,我需要添加编译进一步的软件包或需要在LD库path等等。

但是,当我直接在/usr安装软件时,我只是感觉不好,不能正确地告诉我的哪个定制安装文件属于哪里。 很容易确定一个给定的文件是否属于一个包,但是如果不包含这个文件,那么在大的自定义安装中,记住或找出文件所属的位置是很痛苦的。

当我想删除文件时会变得更糟。 它们分散在bin/lib/man/等中。所以,如果我想彻底删除一个自定义安装的软件包,我必须执行手动工作或最坏的情况,我不能再确定所有的软件包我会留下陈旧的文件。

我知道我也可以开始build立一个自定义的包。 但是这需要我分析我安装的每个软件? 我没有创build.deb文件的真实经验,我也不打算将它们分发给其他安装。 我想要的是跟踪自定义本地安装的一个好方法。

我可能会自己想出一些东西,比如列出所有文件( find / ... ),安装软件,然后重新执行,并将diff保存到某个地方。 只是想知道有没有更好的办法。

你有没有尝试checkinstall (这是在Debian回购)?

您可以使用checkinstall ,而不是使用make install ,它会使用软件包创build(并安装)软件包,以便您可以使用软件包pipe理器进行跟踪。

由于您要求最佳实践:最好的方法是不要将软件安装在存储库中。 如果这是不可能的,最好的做法是从其中构build软件包,并使用系统软件包pipe理器来pipe理它们。

你需要想出一个方法来检查重要的更新,但你怎么做是由你决定的。 但如果他们在那里,你需要重新构build和更新新的包。

我不知道你是否会最终find这个有用的东西,但至less我会分享它:«… NetBSD软件包集合(pkgsrc)是在NetBSD 和其他类UNIX系统上构build第三方软件的框架…»