1 APT

1.1 Intro

APT(Advanced Package Tools-高级包工具),debian环境下面的系统软件管理工具

1.2 基本语法

apt-get [options] command [pkg1 [pkage2 ..]]

1.3 Install

  • 安装: sudo apt-get install pkg1
  • 修复安装(–fix-missing): sudo apt-get -f install pkg1
  • 重新安装: sudo apt-get –reinstall install pkg1 pkg2

1.4 删除命令

  • 移除软件包、保留配置文件: sudo apt-get remove pkg1
  • 清除软件包,不保留配置文件(如果配置没有更改的话): sudo apt-get –purge remove
  • 移除包以及相应的依赖包,保留配置文件: sudo apt-get autoremove pkg1
  • 清除包以及相应的依赖包,不保留配置文件: sudo apt-get –purge autoremove pkg1

1.5 清理命令

清理/var/cache/apt下面的除锁之外的文件: sudo apt-get clean
清理过时文件: sudo apt-get autoclean

1.6 升级命令

  • 更新软件包列表: sudo apt-get update
  • 升级所有包: sudo apt-get upgrade
  • 升级系统: sudo apt-get dist-upgrade

其中更新命令会从源服务器上下载meta到/var/lib/apt/lists目录中,用于包检索,其中源列表/etc/apt/sources.list

1.7 检查

  • 搜索包: sudo apt-cache search pkg1
  • 检查包: sudo apt-get check
  • 下载包源码: sudo apt-get source pkg1
  • 安装包的编译环境: sudo apt-get build-dep pkg1

2 dpkg

2.1 apt和dpkg关系

  • apt、aptitude都是从网络安装软件包,并自动解决依赖关系,但是dpkg仅仅安装本地软件包,并且不解决依赖关系
  • apt从软件源中下载metadata完成软件包/源码的搜索、下载、install、remove
  • metadata包含各个软件包的索引、摘要信息文件
  • apt的安装步骤:
    • apt搜索软件包、下载
    • 使用dpkg安装下载的所有软件包
  • 所以说,apt是dpkg的前端封装工具

2.2 Uninstall

列出所有系统已经存在的软件,dpkg -l |grep xxx, 使用-P、–purge、remove卸载即可;

3 系统更新、查找软件、软件源的原理

3.1 Intro

所有的一切皆在如下文件或者目录中:
/var/lib/dpkg/status
/var/lib/apt/lists目录

3.2 Install and Uninstall

信息来源地——/var/lib/dpkg/status文件

3.2 Query and Download

/var/lib/apt/lists目录

3.3 Update

将/var/lib/dpkg/status文件中的某一个软件信息和/var/lib/apt/lists目录下的metadata对比,判断是否需要更新

4 源

4.1 Format

deb/deb-src url 仓库 包许可类型

4.2 deb/deb-src

  • deb:二进制包
  • deb-src:源码包

4.3 资源地址

某一个指定的资源地址,该资源的根目录下一般存在如下两个目录:dists、pool

  • pool中存放dists中文件的权限、布局;
  • dists中存放各种包结构,即仓库之地

4.4 warehouse仓库

目录dists下的各个子目录的命名规则:主版本、主版本-小版本

1
2
3
4
5
precise
precise-updates(不影响到bug修改)
precise-security(安全性更新)
precise-proposed(预更新)
precise-backports(后备)

4.5 包许可类型

  • main——官方维护的版本
  • universe——社区维护的软件
  • restricted——设备专用驱动
  • multiverse——非自由软件,但免费试用

5 dpkg

5.1 Install

dpkg -i page.deb

5.2 Delete

  • 保留配置:dpkg -r pkg
  • 不保留配置:dpkg -p pkg

5.3 查询

正则查询:dpkg -l pkg_file_pattern

输出:

1
2
3
4
5
6
7
8
第一列的各个期望值含义:
u——状态未知,未安装或者未发生请求
i——用户请求安装
r——用户请求卸载
p——用户请求purge包
h——用户请求版本锁定
第二列:软件包当前状态
第三列:错误状态

数据库查询:dpkg-query -l

查询包的安装目录以及文件:dpkg -L pkg

5.4 信息

获取软件包的详细信息:dpkg -s pkg

5.5 关联文件目录

配置文件: /etc/dpkg/dpkg.cfg——存放默认选项
日志文件: /var/log/dpkg.log
软件包信息: /var/lib/dpkg.available——曾经安装过的软件包信息,即使是卸载的软件
状态信息: /var/lib/dpkg/status——见上面的描述,不保存卸载的软件信息

5.6 控制信息

/var/lib/dpkg/info——软件包控制目录的控制信息

5.7 包命名规则

格式:包名版本-修订号平台.deb

例子:nano_1.3.10-2_i386.deb