当前位置: 首页>>技术教程>>正文


PPA和存储库之间有什么区别?

, ,

问题描述

我最近发布了一个答案,我写了添加PPA。但我现在意识到,我不知道PPA和存储库之间的区别是什么。有人可以向我解释一下吗?

最佳解决思路

Repositories

On systems like Ubuntu, most software is packaged in nice .deb (or .rpm, like in Red Hat) files which contain the programs and libraries you need. These files can be downloaded or come in CDs (Ubuntu’s CD is full of them). Repositories are servers which contain sets of packages.

PPA

Personal Package Archives (PPA) allow you to upload Ubuntu source packages to be built and published as an apt repository by Launchpad.

另见什么是PPA,我如何使用它们?

把它们加起来:

  • 存储库包含包。

  • PPA是包(/软件集合)。

  • Launchpad有一个存储库,可以容纳PPA(/软件集合)。

次佳解决思路

我不同意这个问题的accepted answer。我会写下以下内容作为对该答案的评论,但它太长了。

  • 存储库是托管在任意服务器上的软件包的集合。

  • PPA也是一组托管在Launchpad服务器上的软件包。特别是,PPA不是一个单独的包,因为非常模糊的点“PPA是包(/软件集合)”。在接受的答案中可能会导致相信。另外,包不是(必然)软件的集合,这使得这一点更加令人困惑。

  • 因此,PPA是一种特殊的存储库。就像一个正方形是一种特殊的矩形。

主要的区别是主持人。基本上,如果您是程序员并希望开发和分发自己的软件包,并且在Internet中拥有自己的根服务器,则可以在其上设置自己的存储库。大!但是,如果你没有root服务器,并且你不想支付一台服务器,但仍想开发和分发自己的软件包呢?那么,那就是Launchpad。它提供PPA作为服务用于该用例。您基本上可以在Launchpad上创建自己的存储库,并在那里管理您自己的包。

我们来看一个说明性的例子。

  1. 首先,假设您要在Ubuntu Saucy Salamander上安装MATE Desktop Environment(Gnome 2前叉)。它不包含在官方回购中,开发者也没有维持PPA。相反,他们有自己的回购。您可以像这样添加它:

    $ sudo add-apt-repository http://packages.mate-desktop.org/repo/ubuntu
    

    这将导致以下条目添加到/etc/apt/sources.list

    deb http://packages.mate-desktop.org/repo/ubuntu saucy main
    
  2. 其次,假设您还想查看Cinnamon(另一个Gnome 2 fork)。这包含在自13.04以来的官方回购中,但仍然有开发人员维护的PPA,例如,如果您有兴趣更快地获得新版本,则非常有用。您可以像这样添加它:

    $ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
    

    这将导致以下条目添加到/etc/apt/sources.list.d/gwendal-lebihan-dev-cinnamon-stable-saucy.list

    deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
    

    如您所见,后一个条目与第(1)点中的条目非常相似。实际上,两者都只是Ubuntu视角下的存储库URL。

  3. 事实上,您甚至可以使用与第(1)点相同的语法添加Cinnamon PPA,尽管这不是添加PPA的典型方法:

    $ sudo add-apt-repository http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu
    

    这将导致以下条目添加到/etc/apt/sources.list

    deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
    

    这与第(2)点中的条目完全相同。只写入这些条目的文件的处理方式略有不同,但最终并没有什么区别。在这两种情况下,您最终都会在您的系统上获得Cinnamon PPA的包装,当然也可以在规范的sudo apt-get update之后使用。

第三种解决思路

就APT而言,存储库和PPA之间没有技术差异。两者都是提供软件包的软件存储库,从APT的角度来看是安装软件包的相同机制。

PPA是使用Launchpad作为后端的软件包的存储库。只是同一个东西的另一个名称,即(至少在原则上)通常出于个人原因使用,它可以自动执行大多数操作,否则您必须手动执行或设置自己的服务。

存储库是软件的任何地方,在这种情况下,包列表和包将安装在基于Debian的发行版中。

您可以拥有自己的个人存储库,而无需使用Launchpad,因此可以称为PPA,因为它是个人的。

使用的唯一区别仅在于add-apt-repository的语法,它使用magic关键字ppa:而不是强制用户编写非Launchpad存储库所需的完整URL。

第四种思路

存储库是各种软件的集合,其使得诸如apt-get,aptitude等软件能够下载和安装所述软件。他们的内容可供所有人查看。阅读存储库中的Ubuntu Help Page以获取启示。

PPA是软件的特殊存储库,发行机构尚未对整个社区采用。 PPA软件可能存在缺陷,甚至可能用于恶意软件,因为它们没有像普通存储库那样得到广泛的审查。有关更多信息,请参阅Launchpad’s explanation of PPAsthis discussion of PPAs

第五种思路

Repository是存储或维护包以供下载或更新的地方。这些是包含多组包的服务器。

Personal Package Archive (PPA)是一个特殊的软件存储库,用于通过Launchpad或类似应用程序上载要构建和发布为APT存储库的源包。主要是由非Ubuntu官方开发人员维护

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2042.html,未经允许,请勿转载。