各种apt命令有什么用?

有人可以解释一下这些的用途吗?

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. apt-add-repository

以及使用这些的组合是什么?

一点背景

对于更新和安装,类似Ubuntu的系统使用称为软件源或存储库的概念。

存储库是库的集合,可执行。

仓库中的库,软件使用列表文件进行维护。 因此,当有人更新服务器中的列表文件时,用户将下载最新的列表文件。 此列表文件指示哪些文件已更新,哪些文件未更新。 使用此选项,您只能下载更新的组件。 无需获得整个软件。

除了Ubuntu官方回购之外,还有许多第三方开发者在那里分发应用程序。 Ubuntu为他们提供了一种在Ubuntu中分发的简便方法。 这被称为PPA

PPA也是一个回购,但由开发人员维护。 Ubuntu不承担任何责任。

你的问题回答

apt-add-repository your-repository-here是添加PPA作为计算机的软件源。

apt-get-update是从所有添加的repo获取最新的源文件列表(不是软件,它只下载索引)。 就像你在第一步中添加了一些回购。 执行它们之前,这些软件将无法使用。

sudo apt-get upgrade用于更新已安装软件的所有可用更新。 它使用下载的最新列表文件作为参考,以确定需要安装哪些组件。

让我们对如何在Ubuntu和一般Linux发行版中维护存储库有一些基本的想法。 Ubuntu和Linux发行版使用存储库来提供软件,这些软件是通过安装一个或多个软件包来安装的。

一些术语

软件:我们会说,软件是满足需求或目标的程序或一组程序。 如“奶酪”是一种软件,用于拍照,录制video等。

包:包是最小的软件单元,由Ubuntu发行版分发。 包可以是完整的软件或软件的一部分。 软件包含零个或多个包。

软件包列表: Ubuntu或一般Linux发行版使用package-list,其中包含有关可用软件包的信息。 这些列表在线存储,由计算机中的apt-getaptitudesynaptic或Ubuntu软件中心等软件包管理软件检索。 将这些列表下载到您的计算机后,包管理软件(例如apt-get)知道存储库中可以在线获得哪些包。

存储库:存储库是在线存储的名称,包含包,包列表和包validation信息。 这些有时也被称为包源

sources.list :此文件存储有关已启用存储库的信息。 它位于Ubuntu系统的/etc/apt目录中。 您可以通过转至/etc/apt文件夹并双击sources.list文件来查看该文件的内容。 另请注意,某些存储库行也存储在/etc/apt/sources.list.d目录中的文件中。 包含该目录中的存储库行的文件需要具有扩展名.listapt-get和其他包管理软件也识别该目录中的存储库行。

存储库行:存储库行是指sources.list文件中每个(未注释的)行的格式。 也称为源线回购线

源包:不要与包源混淆,包源是指包含包的存储库。 源包是包含源代码的包,可以编译它们以获得实际的二进制程序,然后可以执行并运行它们。

存储库源代码行的正确格式是

     

例如,回购行可以像这样

  deb http://archive.ubuntu.com/ubuntu precise main 

这意味着,存储库是用于二进制包,它存放在http://archive.ubuntu.com/ubuntu中 ,此存储库用于Ubuntu精确(12.04),此存储库包含main(由官方支持的软件) Canonical)组件。

  • 类型: deb是存储库的类型,它表示它是二进制存储库,而不是源存储库,其类型为deb-scr 。 二进制存储库包含已编译的包,而不是包含源包的源存储库。

  • 位置: http://archive.ubuntu.com/ubuntu http://archive.ubuntu.com/ubuntu存储库的位置。

  • Dist-name: precise是Ubuntu版本的分发名称。 对于Ubuntu 12.04来说,它是precise ,11.10是oneiric

  • 组件: main表示存储库的组件。 Ubuntu存储库分为四个部分。

    1. Main – 包含官方支持的免费和开源软件
    2. Universe – Canonical不支持这些软件,但这些软件由社区维护。
    3. 受限制 – 这些软件由Canonical支持,但不是免费的。 支持这些提供一些必要的驱动程序
    4. 多重宇宙 – 这些也是非自由软件,Canonical不支持。

有关更多信息,请参阅此页面 。

命令说明

  1. sudo apt-get update

    此命令检查您的系统是否具有最新的软件包列表,如果不是,则检索存储在在线存储库中的软件包列表文件。 例如,如果你的sources.list文件包含这样的行deb http://archive.ubuntu.com/ubuntu precise main ,它会检查你的系统是否有主要组件的包列表(二进制包)。 如果它发现您没有列表或列表已过时,它将从存储库中获取列表。

    如果您真的有兴趣查看存储在Ubuntu系统中的软件包列表,请转到/var/lib/apt/lists目录查看它们。 包装清单在提取后存储在那里。

    注意:可以有很多方法来获取这些列表,这超出了本答案的范围。

  2. sudo apt-get upgrade

    此命令下载并安装更新版本的软件包。 如果已安装软件包,则此命令不会下载和安装软件包。 此外,它不会删除任何包。 因此,如果程序包X的升级需要删除程序包Y ,则此命令根本不会升级程序包X

  3. apt-add-repository

    此命令用于在系统中添加存储库。 添加存储库意味着,添加从某个在线源安装包的能力,而不是从那里安装所有包。

    此命令需要存储库源代码行或PPA链接。

    要添加常规存储库:使用sudo apt-add-repository

    比如sudo apt-add-repository deb http://archive.ubuntu.com/ubuntu precise universe

    要添加PPA repsitory:使用sudo apt-add-repository PPA-Name

    例如sudo apt-add-repository ppa:gwibber-daily/ppa

注1:请记住,您可以同时使用apt-add-repositoryadd-apt-repository命令。

注意2:使用此命令添加PPA实际上会检查Launchpad.net站点是否存在该PPA,并在/etc/apt/sources.list.d目录中创建一个文件,其PPA名称包含存储库行的标准格式。

来自维基百科:

Launchpad是一个Web应用程序和网站,允许用户开发和维护软件,特别是免费软件。 Launchpad由Canonical Ltd.开发和维护。

它是同一个Canonical有限公司,它是Ubuntu的官方赞助商。

关于PPA存储库的注意事项:您可能已经注意到,如果添加PPA,则存储库源代码行不会复制到/etc/apt/sources.list文件中。 那么,他们去哪儿了?

这些行转到/etc/apt/sources.list.d目录中的文件, /etc/apt/sources.list.d以这种格式保存: -.list(对于某些PPA,文件名格式可能并不总是遵循该目录中的上述规则)

例如,如果您使用PPA:gwibber-daily/ppa ,将创建一个名为gwibber-daily-ppa-precise.list的文件,该文件将包含标准格式的存储库行。 我的Ubuntu中的文件内容是 –

 deb http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu precise main deb-src http://ppa.launchpad.net/gwibber-daily/ppa/ubuntu precise main 

您已注意到,该命令添加了标准格式的repo行。 此外,它还自动为源包启用了存储库。 (注意以deb-src开头的行,表示源包的存储库)

这些从PPA名称到存储库行的转换是由apt-add-repository完成的,因此,Launchpad.net归Canonical有限公司所有,它也是Ubuntu的赞助商。


  • Apt-get手册
  • 什么是PPA以及如何使用它们?

这是低位:

要将当前包列表与存储库中的包列表进行比较,您将运行

 sudo apt-get update 

要升级所有已安装的软件包,您将运行

 sudo apt-get upgrade 

要将存储库添加到系统(存储库是包含多组软件包的服务器),您可以使用

 sudo apt-add-repository ppa: 

你可以做

 sudo apt-get update && sudo apt-get upgrade 

有关apt-get命令的完整信息,请参阅AptGet / Howto