有人能解释一下这些有什么用吗?
sudo apt-get update
sudo apt-get upgrade
apt-add-repository
这些的使用组合有哪些?
答案1
让我们对 Ubuntu 和一般 Linux 发行版中存储库的维护方式有一些基本了解。Ubuntu 和 Linux 发行版使用存储库来提供软件,这些软件通过安装一个或多个软件包来安装。
一些术语
软件:我们会说,软件是满足某种需求或目标的一个程序或一组程序。例如“Cheese”是一个软件,用于拍照、录制视频等。
包裹:软件包是 Ubuntu 发行版分发的最小软件单元。软件包可能是完整的软件,也可能是软件的一部分。软件由零个或多个软件包组成。
包装清单:Ubuntu 或一般的 Linux 发行版使用 package-list,其中包含有关可用软件包的信息。这些列表存储在线,可通过以下方式检索包管理在您的计算机上下载软件,例如apt-get
、aptitude
或synaptic
Ubuntu 软件中心。将这些列表下载到您的计算机后,包管理软件(例如 apt-get)就会知道存储库中有哪些在线包可用。
存储库:存储库是在线存储的名称,其中包含软件包、软件包列表和软件包验证信息。这些有时也称为包源。
来源列表:此文件存储有关已启用存储库的信息。它位于/etc/apt
Ubuntu 系统的目录中。您可以通过转到/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 存储库分为四部分。- 主要的- 包含免费和开源软件,官方支持
- 宇宙- 这些软件不受 Canonical 的支持,但由社区维护。
- 受限制的- 这些软件由 Canonical 支持,但不是免费的。它们被支持是为了提供一些必要的驱动程序
- 多元宇宙- 这些也是非免费软件,并且不受 Canonical 支持。
看这一页了解更多信息。
命令说明
sudo apt-get update
此命令检查您的系统是否具有最新的软件包列表,如果没有,则检索在线存储库中存储的软件包列表文件。例如,如果您的
sources.list
文件包含类似这样的行deb http://archive.ubuntu.com/ubuntu precise main
,它会检查您的系统是否具有主要组件的软件包列表(二进制软件包)。如果它发现您没有列表或您的列表已过期,它将从存储库中获取列表。如果你真的有兴趣查看存储在 Ubuntu 系统中的软件包列表,请转到
/var/lib/apt/lists
目录查看它们。获取后,软件包列表将存储在那里。注意:有很多方法可以获取这些列表,这超出了本答案的范围。
sudo apt-get upgrade
此命令下载并安装更新版本的软件包。如果您已经安装了软件包,此命令不会下载并安装它们。此外,它不删除任何软件包。因此,如果软件包的升级
X
需要删除软件包,则此命令根本Y
不会升级软件包。X
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-repository
或add-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/操作方法