各种 apt 命令有何用途?

各种 apt 命令有何用途?

有人能解释一下这些有什么用吗?

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

这些的使用组合有哪些?

答案1

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

一些术语

软件:我们会说,软件是满足某种需求或目标的一个程序或一组程序。例如“Cheese”是一个软件,用于拍照、录制视频等。

包裹:软件包是 Ubuntu 发行版分发的最小软件单元。软件包可能是完整的软件,也可能是软件的一部分。软件由零个或多个软件包组成。

包装清单:Ubuntu 或一般的 Linux 发行版使用 package-list,其中包含有关可用软件包的信息。这些列表存储在线,可通过以下方式检索包管理在您的计算机上下载软件,例如apt-getaptitudesynapticUbuntu 软件中心。将这些列表下载到您的计算机后,包管理软件(例如 apt-get)就会知道存储库中有哪些在线包可用。

存储库:存储库是在线存储的名称,其中包含软件包、软件包列表和软件包验证信息。这些有时也称为包源

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

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

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

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

<type of repository>  <location i.e URI>  <dist-name> <components> 

例如,repo 行可以像这样

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

这里的意思是,存储库用于二进制包,托管在http://archive.ubuntu.com/ubuntu这个存储库适用于 Ubuntu precise (12.04),并且该存储库包含主要(Canonical 官方支持的软件)组件。

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

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

  • 地区名称: precise是 Ubuntu 发行版的名称。对于 Ubuntu 12.04 来说,它是precise,11.10 是oneiric

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

    1. 主要的- 包含免费和开源软件,官方支持
    2. 宇宙- 这些软件不受 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 <repo-line>

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

    要添加 PPA 存储库:使用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. 开发和维护。

而且它还是 Ubuntu 官方赞助商 Canonical Ltd。

PPA 存储库说明:你可能已经注意到,如果你添加 PPA,则存储库源代码行不会被复制到/etc/apt/sources.list文件中。那么,它们去了哪里?

这些行转到/etc/apt/sources.list.d目录中的文件,并且该文件以以下格式保存:<PPA-name>-<dist-name>.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 名称到存储库行的这些转换是由 Launchpad.net 完成的apt-add-repository,这并不奇怪,因为 Launchpad.net 由 Canonical Ltd 所有,而 Canonical Ltd 也是 Ubuntu 的赞助商。


答案2

背景介绍

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

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

存储库中的库和软件使用列表文件进行维护。因此,当有人更新服务器中的列表文件时,用户将下载最新的列表文件。此列表文件指示哪些文件已更新,哪些文件未更新。使用它可以仅下载更新的组件。无需获取整个软件。

除了 Ubuntu 官方 repo 之外,还有许多第三方开发者分发他们的应用程序。Ubuntu 为他们提供了一种在 Ubuntu 中分发的简单方法。这就是所谓的PPA

APPA也是一个 repo,但由开发者维护。Ubuntu 不承担任何责任。

您的问题答案

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

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

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

答案3

以下是详细信息:

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

sudo apt-get update

要升级所有已安装的软件包,你可以运行

sudo apt-get upgrade

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

sudo apt-add-repository ppa:<repository-name>

你可以做

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

有关 apt-get 命令的完整信息,请参阅AptGet/操作方法

相关内容