zoukankan      html  css  js  c++  java
  • ubuntu APT-GET工作原理

    http://kurenai.elastos.org/2013/05/02/ubuntu-apt-get%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86/

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

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

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

    /etc/apt/sources.list
    存放的是软件源站点, 当你执行 sudo apt-get install xxx 时,Ubuntu 就去这些站点下载软件包到本地并执行安装

    /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一项中的依赖需求。

  • 相关阅读:
    出现java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap错误问题解决
    选择一个更合适的编程语言
    23.if结构简单应用
    java环境的配置-传送门
    Java课程继续更新说明
    go语言熟知的开源项目
    go语言关于值类型和引用类型
    go语言实现生产者-消费者
    http协议——无连接、无状态
    jenkins结合gitlab实现提交代码自动构建
  • 原文地址:https://www.cnblogs.com/kex1n/p/5845782.html
Copyright © 2011-2022 走看看