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

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

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

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

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

  • 您可以找到PPA或第三方仓库,并从那里安装。

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

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

简短的回答是, 从Ubuntu软件中心安装通常比所有其他方法更好 。 但是,有时您可能希望从其他位置安装程序。


从源代码安装:

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

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

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

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

.deb包安装:

  • 安全隐患 :与从源安装相同。

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

  • 可靠性 :比从源安装好一点。 如果作者提供了.deb包,这意味着他们可能已经对Debian或Ubuntu进行了一些最小的测试。

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

从Ubuntu软件中心安装:

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

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

  • 可靠性 :比从源代码安装要好得多,因为该程序已经过Ubuntu的审核和调整。

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

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

  • 安全隐患 :您需要信任软件的作者以及维护PPA的人。 绝对任何人都可以主持PPA,因此不要仅仅因为它在Launchpad上而信任PPA。 用户本来可能很懒,根本没有查看软件。

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

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

  • 易于安装和卸载 :学习起来并不难,而且它与Ubuntu的软件包管理非常吻合。