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

  • 相关阅读:
    PAT (Basic Level) Practise 1013 数素数
    PAT (Basic Level) Practise 1014 福尔摩斯的约会
    codeforces 814B.An express train to reveries 解题报告
    KMP算法
    rsync工具
    codeforces 777C.Alyona and Spreadsheet 解题报告
    codeforces 798C.Mike and gcd problem 解题报告
    nginx + tomcat多实例
    MongoDB副本集
    指针的艺术(转载)
  • 原文地址:https://www.cnblogs.com/kex1n/p/5845782.html
Copyright © 2011-2022 走看看