如何更新从源代码编译的软件包?

如何更新从源代码编译的软件包?

可能重复:
我可以直接更新从源代码安装的软件吗

我即将安装 Enlightenment 桌面环境,这是一个非常漫长的过程。我想知道安装后它是否会自动更新,还是我必须继续编译才能更新它。

答案1

当您从源代码安装时,没有任何东西(如 dpkg)可以为您跟踪新安装的文件(哪些文件以及它们放在哪里)。除非您明确使用工具。

如何知道文件的安装位置

我用Git跟踪我的 /usr/local 中的安装。它如下所示:

cd /usr/local
git init
git add .
git commit -m "Starting to track /usr/local"

安装新软件(./configuremakemake install)。然后:

cd /usr/local
git status
git add .
git commit -a -m "Installed open-magic-1.2.3"

现在您可以查看安装了哪些文件以及何时安装:

cd /usr/local
git log --stat

如果你熟练使用 Git,你甚至可以这样做卸载使用几个 git 命令。但要小心,因为 Git 不会跟踪文件权限(我编写了一个特殊脚本,可以保存和恢复文件的所有权限和所有权)。我只卸载了几次,尽管我的 /usr/local 中有 334 个提交(ei 安装)。

有些人将软件安装到专用目录中并创建符号链接或将 bin 目录添加到 PATH。

我也开始这么做了。我安装源时将 PREFIX 设置为/opt/open-science-1.2.3(例如),然后创建指向 Git 跟踪的 bin 文件的符号链接/usr/local/bin。这样做的好处是,我可以预先创建/opt/open-science-1.2.3非 root 拥有的目录,然后make install以非 root 身份运行。这向我证明了安装脚本没有将文件连接到系统中的任何地方,除了/opt/open-science-1.2.3

简单但混乱的方法

最简单的升级方法可能就是重新安装新源。只需像第一次一样重新执行安装程序即可。最终可能会有一些孤立的旧文件闲置。软件将正常运行,但孤立的文件会占用空间,使设置变得混乱。

答案2

每次更新时您都需要重新编译。Git、SVN 或 bzr 等源修订包将帮助您查找和下载源文件中的更新,但您需要重新编译。没有针对源文件的自动更新跟踪器/安装程序。

答案3

正如 Aleksandr Levchuk 正确指出的那样,您可以使用 GIT 或 SVN 跟踪安装以获取可用的更新。对于 Enlightenment,有 SVN -http://www.enlightenment.org/p.php?p=contribute&l=en

几个月前我曾问过类似的问题 -我可以直接更新从源代码安装的软件吗。也得到了很好的答案。

相关内容