ubuntu APT-GET工做原理

sudo apt-get update 执行这条命令后计算机作了什么?web

不管用户使用哪些手段配置APT软件源,只是修改了配置文件——/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具备的软件资源并不清楚,须要将这些资源列个清单,以便本地主机知晓能够申请哪些资源。ubuntu

用户可使用“apt-get update”命令刷新软件源,创建更新软件包列表。在Ubuntu Linux中,“apt-get update”命令会扫描每个软件源服务器,并为该服务器所具备软件包资源创建索引文件,存放在本地的/var/lib/apt/lists/目录中。 使用apt-get执行安装、更新操做时,都将依据这些索引文件,向软件源服务器申请资源。所以,在计算机设备空闲时,常常使用“apt-get update”命令刷新软件源,是一个好的习惯。浏览器

 

sudo apt-get install XXX 后计算机作了什么?服务器

使用“apt-get install”下载软件包大致分为4步:第一步,扫描本地存放的软件包更新列表(由“apt-get update”命令刷新更新列表,也就是/var/lib/apt/lists/),找到最新版本的软件包;第二步,进行软件包依赖关系检查,找到支持该软件正常运行的全部软件包;第三步,从软件源所指 的镜像站点中,下载相关软件包;第四步,解压软件包,并自动完成应用程序的安装和配置。网络

 

sudo apt-get upgrade 后计算机作了什么
架构

使用“apt-get install”命令可以安装或更新指定的软件包。而在Ubuntu Linux中,只需一条命令就能够轻松地将系统中的全部软件包一次性升级到最新版本,这个命令就是“apt-get upgrade”,它能够很方便的完成在相同版本号的发行版中更新软件包。在依赖关系检查后,命令列出了目前全部须要升级的软件包,在获得用户确认后,便开始更新软件包的下载和安装。固然,apt- get upgrade命令会在最后以合理的次序,安装本次更新的软件包。系统更新须要用户等待一段时间。app

 

升级到新版本

Ubuntu Linux会不断推出新的版本,不管是经过Internet,仍是使用光盘(由ISO镜像文件刻录的安装光盘),使用“apt-get dist-upgrade”命令能够实现Ubuntu系统从一个版本直接升级到另外一个新版本。例如,从Ubuntu的一个发行版本 dapper(version 6.10)升级到feisty(version 7.04)。ui

这个升级过程包括3步:spa

  ●    第一步,须要修改软件源配置文件的各个配置项中的版本标识。相似于将如下配置项。.net

deb http://cn.archive.ubuntu.com/ubuntu/  dapper main restricted

修改成:

deb http://cn.archive.ubuntu.com/ubuntu/  feisty  main restricted

  ●    第二步,使用“apt-get update”命令刷新软件包更新列表。

  ●    第三步,使用“apt-get dist-upgrade”命令为系统升级新的版本。

从如下命令的执行结果能够看出,“apt-get dist-upgrade”要比“apt-get upgrade”要复杂的多,必需要筹划整个系统的升级过程,其中包括列出全部须要卸载、安装和升级的软件包。这个升级过程当中的时间和空间消耗是至关大的。

wdl@wdl-desktop:~$ sudo apt-get  dist-upgrade

 

先介绍几个和apt-get相关的目录:

/var/lib/dpkg/available
文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 ubunt 安装源中的全部软件包,其中包括当前系统中已安装的和未安装的软件包.

/var/cache/apt/archives
目录是在用 apt-get install 安装软件时,软件包的临时存放路径

/etc/apt/sources.list
存放的是软件源站点

/var/lib/apt/lists
使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录

APT工做原理:

Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。而后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,全部的Ubuntu用户随时都能得到最新版本的安装软件包。所以,对于用户,这些镜像服务器就是他们的软件源(Reposity)。

然而,因为每位用户所处的网络环境不一样,不可能随意地访问各镜像站点。为了可以有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。

apt-get的更新过程:
执行apt-get update
程序分析/etc/apt/sources.list
自动连网寻找list中对应的Packages/Sources/Release列表文件,若是有更新则下载之,存入/var/lib/apt/lists/目录
而后 apt-get install 相应的包 ,下载并安装。

即便这样,软件源配置文件只是告知Ubuntu系统能够访问的镜像站点地址,但那些镜像站点具体都拥有什么软件资源并不清楚。若每安装一个软件包,就在服务器上寻找一遍,效率是很低的。于是,就有必要为这些软件资源列个清单(创建索引文件),以便本地主机查询。

apt-get install 下载的软件存放到 /var/cache/apt/archives/下。

同时,APT可以检查Ubuntu Linux系统中的软件包依赖关系,大大简化了Ubuntu用户安装和卸载软件包的过程。

apt-get install原理:
deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted

可经过浏览器找到

apt-get 每次都会读取这个文件,从而获取的包的信息。从Packages.gz中获取到全部包的信息。Packages.gz中包含的信息有:

包名,优先级,类型,维护者,架构,源文件(source),版本号,依赖包,冲突性信息,包大小,文件的下载路径,MD5sum,SHA1,包描述,Xul-Appid—应用程序id,Bugs信息,Origin,Supported

Packages中的一个包信息实例:

Package: abrowser
Priority: optional
Section: web
Installed-Size: 153
Maintainer: Ubuntu Mozilla Team <ubuntu-mozillateam@lists.ubuntu.com>
Architecture: amd64
Source: firefox
Version: 11.0+build1-0ubuntu4
Depends: firefox (>= 9.0)
Filename: pool/main/f/firefox/abrowser_11.0+build1-0ubuntu4_amd64.deb
Size: 8940
MD5sum: e8781af38a6de76126d190fc10a14bf2
SHA1: 408abd5f960d4b02bc18581df348954eb7620772
SHA256: cdfad0e4435c035b3115bdec08d79ccfc68bf9480e89df9270b3b6befa348699
Description: Safe and easy web browser from Mozilla – transitional package
Description-md5: e89058e4775caff7d26313fa8811675e
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu
Supported: 18m

从这个信息段中能够看出来,实际的deb包放在pool/main/f/firefox/abrowser_11.0+build1-0ubuntu4_amd64.deb,经过浏览器一样能够找到。从中也能够看到Depends一项中的依赖需求。

相关文章
相关标签/搜索