各种apt命令有什么用?
有人可以解释一下这些的用途吗?
sudo apt-get update
-
sudo apt-get upgrade
-
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-get
, aptitude
, synaptic
或Ubuntu软件中心等软件包管理软件检索。 将这些列表下载到您的计算机后,包管理软件(例如apt-get)知道存储库中可以在线获得哪些包。
存储库:存储库是在线存储的名称,包含包,包列表和包validation信息。 这些有时也被称为包源 。
sources.list :此文件存储有关已启用存储库的信息。 它位于Ubuntu系统的/etc/apt
目录中。 您可以通过转至/etc/apt
文件夹并双击sources.list
文件来查看该文件的内容。 另请注意,某些存储库行也存储在/etc/apt/sources.list.d
目录中的文件中。 包含该目录中的存储库行的文件需要具有扩展名.list
。 apt-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存储库分为四个部分。- Main – 包含官方支持的免费和开源软件
- Universe – 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
比如
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-repository
或add-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
以这种格式保存:
。 (对于某些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