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


14

自从我开始使用Ubuntu以来已经有将近一年的时间,但是我没有尝试从源代码安装软件。我实际上没有发现这样做的必要。但是现在我正在开发一个软件,该软件处于存储库的候选发布阶段,但是最新的稳定版本的源代码可以在软件主页上找到。

我了解到,如果软件具有许多依赖性,则从源代码安装可能会很困难。但是,如果我解决了这个问题,我会对最新版本感到满意。但是我一直想知道这样的软件是否可以自动更新自身,还是我必须运行一些脚本来更新软件包。还是更糟糕的是,我必须从头开始重新安装每个更新?

我也很想知道从上述来源以外安装是否有任何特定的优势。


Answers:


10

最好注意,软件的依赖性很少改变。如果您一次成功编译了该软件,则任何后续版本都应该易于编译-所有依赖关系都应该已经满足。

如果您是从源代码编译的,则没有任何.deb软件包或类似软件包可用于更新,除非您等待发行版将其包含在软件库中,或者等待开发人员的PPA更新。

简而言之,必须先将其编译为deb。编译旧版本不会使您能够自动更新,您仍然必须完成整个“下载-配置-编译-安装”过程。

但是,如果要在多台计算机上安装相同的版本,则将编译后的版本打包为一个.deb(或类似的)版本并将其分发到这些计算机将是有意义的。如果操作正确,则依赖项将被自动拉入。

至于从源代码安装的优点,我能想到的只有两个:

  • 您可以访问该代码的最新版本,并且可以选择稳定版本或最新版本(通常称为每晚构建,最新版本等)。
  • Ubuntu /其他发行版可能不想将软件包含在其存储库中。在这种情况下,您将被开发人员或社区提供的源代码或软件包所困扰。也就是说,您别无选择,只能使用源。

4
即使您自己编译了一些东西以供在一台计算机上使用,也要自己制作一个.deb软件包,这始终很有用,因为它可以帮助您将已安装软件的概述放在一个地方,并且也使自己的卸载或升级变得更加容易。
2010年1

4

根据这篇文章,您可以在编译源代码之后生成一个.deb包。然后,您可以从.deb软件包安装而不是“进行安装”。这使得更新更容易(如果它在某个存储库中),因为该软件包将由跟踪更新的软件包管理器进行管理。

如果要从源代码构建软件包“ some-package”并且存在依赖性,则可以尝试“ apt-get build-dep some-package”自动安装编译软件包所需的所有依赖性,而无需手动跟踪每个软件包依赖自己。这样,依赖关系也由程序包管理器管理,并且也应自动更新。


3

git用户的另一种选择值得一提:

如果需要,您也可以git pull在更早的版本后使用它git clone来更新源代码,然后重新编译程序。(您还可以git用来进一步跟踪文件:在此处查看答案。)

例如,如果您最初是用来git clone获取源代码的,

git clone git://github.com/person/programname.git

并且在编译和安装后保留了该文件夹,您可以将其cd到该文件夹​​并运行git pull以获取最新的提交。然后删除您可能已经创建和/或运行的所有构建目录make clean(如果适用),然后再次编译该软件并使用进行安装checkinstall,这还会为您创建一个软件包(尽管不适合分发)。

但是,如果您正在帮助开发程序,并且每天需要重新编译,git pull那么您可能会安装到主文件夹中,因为不必/usr/local/每次都安装到层次结构中。

例如,如果我正在测试并定期重新编译程序,则在获得最新的提交git pull并运行(针对该特定程序)后,我将CD放入我的build文件夹:

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home

然后编译调试版本进行测试。

但是,如果您只想每月左右编译一个新版本的git clone程序(并且没有对其进行测试或调试),则通常可以使用来安装到/usr/local/层次结构中checkinstall


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.