问题描述
当使用apt-get install
方法将软件包安装到ubuntu上时,获取该软件包的源代码和从头开始构建它是否有任何根本区别? apt-get install
功能是否只是下载源并在您的机器上将其构建到指定的目录,还是在幕后更多?
最后(也许这没有答案)是一种比另一种方法更好的方法?我在这里的目标是从源代码中自己构建它有什么优势,还是让apt-get
做它的事情更好?
最佳解决办法
apt,yum,pacman,emerge等包管理系统的优点包括:
-
可以轻松查询已安装或可用的软件包版本。
-
完全删除一个包很容易,确保它的所有文件都没有了。
-
验证包文件的完整性很容易,因此您可以查看它是否已损坏或被篡改。
-
通过安装新版本并删除所有旧版本文件,可以轻松升级软件包。这将确保不会从旧包中留下任何遗留的文件来混淆或破坏事物。
-
很容易看出哪些包需要或提供其他包提供或需要的东西,因此您可以确保所需的项目使包正常运行。
-
安装或删除软件包组很容易。
-
在许多情况下,可以降级回包的先前版本,例如当新版本有错误时。
虽然它适用于Fedora,但另请参阅:
https://fedoraproject.org/wiki/Package_management_system
从源代码安装可能有优势
-
您可以自定义二进制文件(启用/禁用选项)
-
然后可以在存储库中获得更新的软件包
-
有时需要修复错误
但缺点是,当新版本可用时,您必须手动更新软件包,并且您经常会失去支持。
IMO如果你想编译所有或大部分软件包,我会建议Gentoo。
次佳解决办法
Apt-get是APT包处理实用程序(CLI),back-end到Synaptic和Aptitude。
从您的系统触发的apt-get方法检查文件中列出的官方来源或存储库
etc/apt/sources.list
例如。在运行sudo apt-get update && sudo apt-get upgrade
(我使用),运行类似的东西
其中,链接的Ign(忽略)in-front表示自上次访问该存储库后未进行任何更改,并且Get表示检索Sources文件,说明该存储库中新可用包的更改。
不,apt-get实用程序不下载源文件,而是下载由官方Ubuntu打包器打包和发布的.deb package,该打包器已经过系统稳定性和集成测试。
可以在中找到apt-get下载的软件包
/var/cache/apt
在这里您可以看到所有Updates
为.deb软件包,您还可以通过访问此Precise-updates packages来比较它们的cross-check。
就编译源程序包而言,它是不可取的,甚至不推荐用于Ubuntu 12.04,因为它是LTS版本,你可以在这里查看原因
Is it better to compile from source or to install from a .deb package?
Would compiling programs from source speed up my operating system?
Advantages/Disadvantages of installing from source code
如需进一步参考:apt-get,sources.list。
第三种解决办法
如果您从源代码构建,那么您可以在其中包含更多选项。从apt-get
安装只需安装pre-built软件包。
至于哪个更好,这取决于你需要它。我从来不需要从源代码编译,但我的ubuntu笔记本电脑上没有做任何广泛的事情。
第四种办法
我认为您可以使用apt-get来安装软件包源。
-
您需要激活源代码存储库打开/etc/apt/sources.list文件,您将看到注释掉的行(以#开头),它们上面有”source”。取消注释它们
-
安装所需程序的依赖项:
sudo apt-get build-dep "program"
-
下载并编译您的程序:
sudo apt-get -b source "program"
之后,您将在主目录中获得.deb包。