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

Alv*_*var 52 ppa repository

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

Mal*_*ppa 71

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

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

  • PPA也是一个包的集合,托管在 Launchpad 服务器上。

    特别是,PPA不是单个包,因为表述非常含糊的点“PPA 是包(/软件集合)”。在接受的答案中可能会导致相信。此外,(不一定)不是软件集合,这使得这一点更加令人困惑。

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

主要区别在于主机。基本上,如果您是一名程序员并且想要开发和分发您自己的软件包,并且您在 Internet 上拥有自己的根服务器,则可以在其上设置自己的存储库。伟大的!但是,如果您没有根服务器,并且不想为一台服务器付费,但仍想开发和分发自己的软件包怎么办?嗯,然后是 Launchpad。它正在为该用例提供 PPA 作为服务。您基本上可以在 Launchpad 上创建自己的存储库,并在那里管理您自己的包。

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

  1. 首先,假设您要在 Ubuntu Saucy Salamander 上安装MATE 桌面环境(Gnome 2 分支)。它不包含在官方存储库中,开发人员也不维护 PPA。相反,他们有自己的回购。你可以像这样添加它:

     $ sudo add-apt-repository http://packages.mate-desktop.org/repo/ubuntu
    
    Run Code Online (Sandbox Code Playgroud)

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

     deb http://packages.mate-desktop.org/repo/ubuntu saucy main
    
    Run Code Online (Sandbox Code Playgroud)
  2. 其次,假设您还想看看Cinnamon (另一个 Gnome 2 分支)。这包含在自 13.04 以来的官方存储库中,但仍有开发人员维护的 PPA,例如,如果您有兴趣更快地获得新版本,则很有用。你可以像这样添加它:

     $ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
    
    Run Code Online (Sandbox Code Playgroud)

    这将导致以下条目被添加到/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
    
    Run Code Online (Sandbox Code Playgroud)

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

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

     $ sudo add-apt-repository http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu
    
    Run Code Online (Sandbox Code Playgroud)

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

     deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
    
    Run Code Online (Sandbox Code Playgroud)

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

  • @jarno 是的,“add-apt-repository”的手册页在这方面确实不完整。请使用“add-apt-repository --help”来查看我在 1 和 3 中使用的 URL 形式确实是正确的并且是预期的可能选项。此外,您的假设是绝对正确的:使用 URL 形式时不会添加 PPA 的 GPG 公钥。这是一个有用的补充,谢谢!:) 请注意,我*不*建议使用 3 中描述的表格来添加 PPA。它只是为了说明事实上 PPA 只是一种特定类型的存储库。 (2认同)

Rin*_*ind 18

存储库

在像 Ubuntu 这样的系统上,大多数软件都打包在很好的 .deb(或 .rpm,如 Red Hat)文件中,其中包含您需要的程序和库。这些文件可以下载或以 CD 形式提供(Ubuntu 的 CD 中装满了这些文件)。存储库是包含包集的服务器

购电协议

Personal Package Archives (PPA) 允许上传 Ubuntu 源包,以便通过 Launchpad构建和发布为apt 存储库

另请参阅什么是 PPA 以及如何使用它们?维基百科

把它们加起来:

  • 存储库有包。
  • PPA 是个人包裹的档案。
  • Launchpad.net 持有 PPA。

  • PPA 不是一个包,它是一个存储库。每个 PPA 可以包含多个包。Launchpad 是(或者更确切地说是托管)一组称为 PPA 的存储库。 (11认同)
  • PPA 不只是由个人或团体选择和维护的存储库或软件吗?(与 Ca​​nonical 或官方 Ubuntu 开发者没有直接关系的人)。PPA 就像一个存储库,而不是一个包。 (4认同)

Bra*_*iam 12

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

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

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

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

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


小智 9

一个是各种软件的集合使软件和apt-get,资质等,下载和安装软件的说。它们的内容可供所有人查看。阅读有关存储库的Ubuntu 帮助页面以获得启发。

PPA是软件的特殊存储库,发行版领导层尚未为整个社区采用。PPA 软件可能有缺陷,甚至可以用于恶意软件,因为它们没有像一般存储库那样被广泛审查。有关更多信息,请参阅Launchpad 对 PPA 的解释对 PPA 的讨论


g_p*_*g_p 8

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

一个个人包档案(PPA)是用于上载源包一个特殊的软件资源库建成并公布由启动板或APT存储库中的类似的应用。它主要由非官方 Ubuntu 开发人员维护