我应该从源tarball(`.tar.gz`),Ubuntu软件中心还是其他地方安装程序?


29

有几种方法可以在Ubuntu中安装应用程序:

  • 您可以下载源tarball(通常是a .tar.gz.tar.bz2文件)并手动安装。(请参阅如何安装.tar.gz(或.tar.bz2)文件?

  • 您可以.deb使用dpkg或软件中心下载文件并手动安装。

  • 您可以在Ubuntu软件中心中搜索该应用程序并将其安装在该应用程序中,或apt与正式的Ubuntu存储库一起使用。

  • 您可以找到PPA或第三方存储库,然后从那里安装它。

每种方法的优缺点是什么?请在回答中讨论每种方法的安全性,更新频率和程序可靠性。


1
一个问题中有很多问题。问一个更有针对性的问题可能会更好一些。默认为使用Ubuntu软件中心。一个很好的比较/对比是tar球(.tar.gz)和apt-get + .deb生态系统(包括命令行和Ubuntu软件中心)之间的比较。
沃伦·P

如果作为四个单独的问题问,那么对所有四个答案都应该是相同的:更喜欢使用来自回购方(主要或第三方)的pkg管理器进行安装/更新。如果这不是一个选择,那么您就可以开始了解这方面的一般优点和缺点了-但在那时,它可能会归结为正在使用的应用程序以及您具体想使用的应用程序。(例如,我安装了由公共仓库提供的标准“ java”,但作为开发人员,我也通过tar.gz在/ opt / java中安装了5个不同的版本)。
迈克尔,2012年

Answers:


33
  • 可靠性:
    • 从tarball安装时,软件可能会尝试覆盖其他软件。需要构建依赖项,并且该过程的故障率很高。如果您要安装存储库中的软件包所依赖的软件,这将无法满足该依赖关系,因为它没有向进行注册dpkg,除非您使用checkinstall该软件将其临时转换为debian软件包。这样,您确实有遭受破坏的dpkg风险即使代码是开源的,除非您确保未进行更改,否则仍应从受信任的站点下载它。您可以安装多个版本的软件,只要它使用不同的目录即可。您可以在makefile中覆盖它。
    • 使用debian软件包将确保文件不会覆盖其他程序的文件,但是,如果使用sudo dpkg -i file.deb,则必须先安装依赖项。以这种方式安装后,除非该软件包也位于存储库中,否则您将无法获得更新,但是此软件包将满足需要此软件的依赖项。它还很可能为该程序包提供菜单条目或至少注册手册页。Debian软件包通常使用Lintian进行测试,以确保软件包符合或超过一组可能非常严格的标准,甚至取决于某些文件是否具有任何可执行代码。不能安装同一软件包的多个版本。制作不当的软件包可能无法安装,无法移除甚至破坏DPKG,导致维修困难,疯狂搜索备份,甚至在问题严重时重新安装。
    • apt尽可能使用是最佳选择。依赖关系将被自动获取和安装,并且在启动板上使用可靠的构建服务器配置来构建软件包,从而最大程度地减少故障。可以通过aptitude或其他工具搜索软件包,并且可以通过更新管理器轻松地进行更新。由于依赖项也来自apt,因此程序包更可能与依赖项正确交互。软件包通过Lintian与debs一起进行测试,但是该测试与高度稳定的构建服务器相结合,使软件包更加稳定。由于这些软件包是通过Ubuntu的构建服务器传递的,因此很可能会对其进行调整以与其他操作系统集成。同一软件包的多个版本不能被安装。由于Ubuntu的构建服务器用于PPA,因此apt由于自动限制而造成的更改很少,您可以避免的。
  • 更新中:
    • 使用tarball,除非程序有自己的检查程序,否则您将不会获得任何更新。这样,您将需要手动安装此类更新,并且它们不会被合并到一个地方。您可能可以在tarball中获得每晚甚至最新的源代码来进行编译和安装。如果您需要最新的代码,这可能会很有用。
    • 使用debian,只有在您拥有软件包的存储库的情况下,软件包才会被更新。开发人员很可能会使debian软件包落后于最新消息,但beta经常在在线debs中找到。
    • 使用apt,软件包将非常容易更新。更新被合并到一个位置,即更新管理器,并且自动或半自动完成。除非您使用Ubuntu的beta或beta,否则将使用经过良好测试的版本,即使它们比当前上游源代码落后一两个版本。一旦对安全更新进行了轻松的测试,便会立即推送这些更新,以确保不会使情况变得更糟。这意味着将通过及时更新来保护您的安全,但是将检查这些更新以避免数据丢失。
  • 安全:
    • 压缩包不以任何方式进行数字签名。它们可能被恶意第三方破坏或修改。即使您执行哈希和(避免MD5),也应该信任站点的所有者和包的作者,因为它们提供SHA-或MD5-sum。
    • Debian软件包未签名,但是dpkg不允许Debian软件包覆盖另一个文件,因此恶意deb不能通过覆盖它来破坏init或混乱bash。您应该始终信任网站和软件包的作者。
    • apt对存储库使用已签名的密钥,因此在没有出现红旗的情况下无法对其进行破坏。PPA上载是经过数字签名的,因此PPA的非所有者不能放置损坏或不安全的软件包。另一个软件包的文件也不会被覆盖。当然,您应该信任PPA或存储库所有者,因为带有恶意代码的未经检查的程序包将在运行时执行。

1
我建议您添加集成。Ubuntu和上游Debian软件包管理器确保软件包参与系统范围的功能,例如Alternatives系统(我有可以打开网页的X程序,我想将其作为默认程序)等等。通常,手动安装tarball并非如此。
沃伦·P

@WarrenP我确实确实添加了这一点,但可能不清楚。谢谢!
ζ--

是“如果您要安装存储库中软件包所依赖的软件,这将无法满足该依赖关系,因为它没有在dpkg中注册。” 在第一个要点中是要介绍集成的

1
@ vasa1这与tarball有关,因为Apt和dpkg将在确定是否安装软件包时检查其数据库,而不是文件系统。您可以随时使用它checkinstall来解决此问题。
–ζ

19

简短的答案是,从Ubuntu软件中心安装通常比其他所有方法都更好。但是,有时您可能想从其他地方安装程序。


从源安装:

  • 安全影响:您需要信任软件的作者和托管下载的网站。您还应该检查下载是否通过HTTPS执行,否则,第三方可能会修改下载。

  • 更新频率:您将始终获得最新,最好的信息!更新将与原始作者选择的一样频繁。但是,您将需要亲自检查更新。

  • 可靠性:它可能不如其他方法可靠,因为该软件将经过较少的测试,甚至可能根本没有针对Ubuntu和其他Linux发行版进行过测试。

  • 易于安装和卸载:所有选项中最困难的。即使是经验丰富的用户也可能会避免使用此选项,因为他们更喜欢使用本机Debian软件包,该软件包易于管理。

.deb软件包安装:

  • 安全影响:与从源安装相同。

  • 更新频率:与从源安装相同。

  • 可靠性:比从源代码安装略好。如果作者提供了一个.deb软件包,则意味着他们可能已经在Debian或Ubuntu上进行了一些最小的测试。

  • 易于安装和卸载:非常容易。只需双击并单击“安装”即可!同样易于卸载。

从Ubuntu软件中心安装:

  • 安全隐患:您需要信任软件的作者和Ubuntu回购维护者。总的来说,这比直接从源代码安装更好的安全性,因为Debian和/或Ubuntu维护人员已对该程序进行了一定程度的审查。如果该程序是开源的,则Debian和/或Ubuntu维护人员也可以修补该程序以修复安全漏洞。

  • 更新频率:Debian和/或Ubuntu维护者仅选择某些版本的软件。(例如,他们只能选择稳定的更新)。在程序发布到将其包含在Debian和/或Ubuntu仓库中之间会有一个延迟。如果您想要最新和最好的,那不是最好的选择。如果您需要经过审核的稳定更新,这是一个不错的选择。通过更新管理器和会自动提出更新apt-get

  • 可靠性:由于已针对Ubuntu对该程序进行了检查和调整,因此它比从源代码安装要好得多。

  • 易于安装和卸载:非常非常容易。

从PPA或第三方存储库安装:

  • 安全隐患:您需要信任软件的作者以及维护PPA的人员。绝对任何人都可以托管PPA,因此不要仅仅因为PPA在启动板上就信任PPA。用户可能很懒,根本没有审查该软件。

  • 更新频率:取决于PPA。检查更新很容易。

  • 可靠性可靠性通常不如从Ubuntu软件中心安装。PPA的程序尚未达到Ubuntu软件中心的标准,因此实际上可以保证它们的可靠性较低。

  • 易于安装和卸载:这并不难学习,并且非常适合Ubuntu的软件包管理。


1
apt-get无论如何,USC只是一个前端。我们不要将其变成GUI与命令行辩论。如果您认为选择值得讨论,请提出另一个问题。
Flimm

2
@Flimm:不完全是,USC也可以安装.deb软件包,因此更适合将USC称为apt-get和dpkg的前端。
Lie Ryan

1
我不是在说“辩论”,而是在说“用户来这里是为了澄清,这个问题和这个答案似乎并没有使事情变得很清楚”。
沃伦·P

1
@LieRyan:同意。
Flimm

1
@WarrenP:我不同意用户的目的。用户来这里决定从哪里下载和安装应用程序。如果问题尚不清楚,我们可以对其进行编辑。我认为问题很明确,如果您还有另一个对用户更有用的问题,请创建一个新的问题帖子。
Flimm
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.