apt-get工作顺序
来源:互联网 发布:淘宝代理买吃的要证吗 编辑:程序博客网 时间:2024/05/21 10:00
1 查询源列表
apt命令会访问/etc/apt/sources.list
源列表.
deb [by-hash=force] http://packages.deepin.com/deepin unstable main contrib non-free
2.几个和apt-get相关的目录:
/var/lib/dpkg/available
文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Deepin安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
/var/cache/apt/archives
目录是在用 apt-get install 安装软件时,软件包的临时存放路径
/etc/apt/sources.list
存放的是软件源站点, 当你执行 sudo apt-get install xxx 时,deepin就去这些站点下载软件包到本地并执行安装
/var/lib/apt/lists
使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录
3.APT工作原理:
Deepin采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Deepin用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)。
然而,由于每位用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Deepin系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。
1)apt-get的更新过程:
执行apt-get update
程序分析/etc/apt/sources.list
自动连网寻找list中对应的Packages/Sources/Release列表文件,如果有更新则下载之,存入/var/lib/apt/lists/目录。
然后 apt-get install 相应的包 ,下载并安装。
即使这样,软件源配置文件只是告知Deepin系统可以访问的镜像站点地址,但那些镜像站点具体都拥有什么软件资源并不清楚。若每安装一个软件包,就在服务器上寻找一遍,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。
apt-get install 下载的软件存放到 /var/cache/apt/archives/下。
同时,APT能够检查Deepin Linux系统中的软件包依赖关系,大大简化了Deepin用户安装和卸载软件包的过程。
2)apt-get install原理:
deb [by-hash=force] http://packages.deepin.com/deepin unstable main contrib non-free
2 查询Packages.gz
Main 的包的相关信息均在 http://pools.corp.deepin.com/deepin/dists/unstable/main/binary-amd64/
下。不是把包放在这里就行了,还需要生成Packages.gz的包文件,因为apt-get 每次都会读取这个文件,从而获取的包的信息。
从Packages.gz中获取到所有包的信息,然后apt-get就可以通过它找到所有的包并且自动下载安装了。
来看看Packages.gz都有什么吧(下面是python包的信息):
Package: zsshSource: zssh (1.5c.debian.1-3.2)Version: 1.5c.debian.1-3.2+b1Installed-Size: 59Maintainer: Ben Wong <ben@wongs.net>Architecture: amd64Depends: lrzsz, openssh-client | telnet | telnet-ssl, libc6 (>= 2.14), libreadline6 (>= 6.0), libtinfo5 (>= 6)Size: 22230SHA256: a3d0b5b9925f6682e47b4db702653144ab3c1f0c52b6cb1fa2b55a5e24e771dfSHA1: f025cd5b8f23f74b4dbfca4f59f4a8935c67951fMD5sum: efc7c34882d5d05f6a0e6acbe3a290f2Description: interactive file transfers over ssh zssh (Zmodem SSH) is a program for interactively transferring files to a remote machine while using the secure shell (ssh). It is intended to be a convenient alternative to scp, allowing to transfer files without having to open another session and re-authenticate oneself. . Files are transferred through the zmodem protocol, using the rz and sz commands. . Homepage: http://zssh.sourceforge.net/Tag: hardware::modem, interface::commandline, protocol::TODO, protocol::ssh, role::program, scope::utility, uitoolkit::ncurses, use::downloadingSection: netPriority: optionalFilename: pool/main/z/zssh/zssh_1.5c.debian.1-3.2+b1_amd64.deb
包含的信息有:
包名,优先级,类型,维护者,架构,源文件(source),版本号,依赖包,冲突性信息,包大小,文件的下载路径,MD5sum,SHA1,包描述,Xul-Appid---应用程序id,Bugs信息,Origin,Supported
从以上可以看到包的下载地址为:
(http://package.deepin.com/deepin)pool/main/z/zssh/zssh_1.5c.debian.1-3.2+b1_amd64.deb
3 下载包或者依赖
它会首先检查依赖,如果不存在则下载依赖包,这个依赖包或许还有依赖(递归下载),在完成了所有依赖包则可以进行下载,安装完成,中间任意一环没有完成则失败退出.这就是整个过程啦.
总结
- 更新Packages.gz解析安装包所依赖的文件
- 根据1的结果检查是否所需要的依赖都已经安装,假设没有安装,则下载(应该有自己的下载功能)这些依赖并进行安装,这个过程中会对每个依赖重复1、2这两个过程
- 解决依赖关系,下载指定软件并安装,2、3中如果找不到软件或者库,则失败.
Packages.gz已经包含所有所依赖的软件及其版本信息、以及下载地址.
apt-get常用命令
- sudo apt-get install package 安装包
- sudo apt-get remove package 删除包
- sudo apt-get update 更新源
- sudo apt-get upgrade 更新已安装的包
- apt-get source package 下载该包的源代码
还有一些命令:
- apt-cache search package 搜索软件包
- apt-cache show package 获取包的相关信息,如说明、大小、版本等
- sudo apt-get install package --reinstall 重新安装包
- sudo apt-get -f install 修复安装
- sudo apt-get remove package --purge 删除包,包括配置文件等
- sudo apt-get dist-upgrade 升级系统
- apt-cache depends package 了解使用该包依赖那些包
- apt-cache rdepends package 查看该包被哪些包依赖
- sudo apt-get build-dep package 安装相关的编译环境
- sudo apt-get clean && sudo apt-get autoclean 清理无用的包
- sudo apt-get check 检查是否有损坏的依赖
- apt-get工作顺序
- apt-get 工作原理
- APT-GET工作原理简介
- ubuntu APT-GET工作原理
- ubuntu APT-GET工作原理
- ubuntu APT-GET 工作原理
- ubuntu APT-GET工作原理
- ubuntu apt-get工作原理
- Debuab APT-GET工作原理
- apt-get命令工作原理简介
- apt-get常用命令及工作原理
- apt-get
- apt-get
- apt-get
- apt-get
- apt-get
- apt-get
- Apt-get
- Java enum的用法详解
- javascript 从ueditor中学到的闭包知识
- [BZOJ1834][ZJOI2010]network 网络扩容(isap+费用流)
- Windows Server 2008 R2上部署ASP.NET MVC3.0应用网站程序
- 使用Powershell注销指定用户
- apt-get工作顺序
- Android View和ViewGroup事件分发机制源码分析
- cocos2d-x调用scheduleUpdate()不执行update()方法的解决办法
- hadoop程序开发实践——简单程序
- display:inline-block列表布局经常会遇到的“换行符/空格间隙问题”
- busybox 编译错误 miscutils/nandwrite.c:151:3: error: ‘MTD_FILE_MODE_RAW’ undeclared
- 专访包建强:为什么我说Android插件化从入门到放弃?
- 利用格雷码找出集合的所有非空子集
- java.net.SocketException: Too many open files解决方法