Ch7 全面管理Ubuntu软件包
知识体系
- Ubuntu软件包管理-
dpkg工具
apt/aptitude工具
Synaptic(新立得)
- 编译DEB源代码
- Ubuntu软件中心和Ubuntu
彻底了解Ubuntu软件包
- 扩展名:
不是常见的RPM格式而是 DEB格式二进制编码软件包和扩展名为DSC的源码软件包(通常只会用到DEB格式,源码包只在查看和编译软件等特殊情况下才会用到)
- DEB文件命名方式存在一定规则:
例如: gfce_ver-rev_arch.deb gfce是软件包名字,ver代表版本,rev代表修订版本,arch是该软件包对应的硬件平台(常见的 i386)
软件包包括: 软件的所有文件,版本,名称,依赖关系等各种信息
- 小知识
DEB软件包之间的基本关系
软件仓库:
是由Ubuntu软件包维护者维护并公开发布的DEB软件包集合,可位于网络(如软件包服务器,FTP服务器,光盘和硬盘等存储介质)
用户安装软件时不会自己下载DEB文件安装,而是通过 软件包管理工具 根据用户的动作和配置计算依赖性关系后从软件仓库下载相应的软件包并安装
(不同版本Linux系统软件仓库不通用)
软件包管理工具:
用户通过各种软件包管理工具来使用DEB软件包和软件仓库(常见 dpkg apt-get aptitude dselect等)
dpsk: 最底层工具,会被其他工具或用户调用以安装 卸载 查询和配置DEB软件包(不会用可以直接安装DEB软件包)
apt-get 和 aptitude工具: 使用时需要指定操作(安装 卸载或重装等) ,还需要软件包的名称
DEB软件包之间的依赖关系:
常见依赖关系: Depends Recommends Conflicts
假设有两个软件包A B:
Depends : A依赖B,意味着安装软件包A时系统必须已安装B
Recommends : (推荐关系)开发者推荐用户安装A同时安装B
Conflicts : (冲突)A和B不能共存
Ubuntu软件包管理架构(层层积累,自下而上):
图形界面 : Synaptic
文本界面 : aptitude Tasksel dselect
命令行 : apt <===network===> Ubuntu软件仓库
最底层 : dpkg dpkg-deb
底层软件包管理工具 dpkg
dpkg工具是Ubuntu软件包管理工具的基础 dpkg-deb 是dpkg的后端工具(为dpkg提供更底层的软件包管理功能)
dpkg命令格式 : dpkg [ -i | -r | -P | -l | -L | -s| -S ] packagefilename
-i 安装软件包 install
-r 卸载安装包,但不删除软件包的配置文件 remove
-P 完全卸载软件包,包括所有相关配置文件
-l 查看当前系统中已安装软件包的信息
-L 查看当前系统中指定软件包的所安装的相关文件
-s 查询已安装的指定软件包的详细信息
-S 查看系统中某个文件所属的软件包
通过实例详细介绍dpkg :
查看软件包所安装的内容 : sudo dpkg -c packagename.deb
查看软件包详细信息 : sudo dpkg -I packagename
安装软件包 : sudo dpkg -i packagename.deb
卸载已安装软件包 : sudo dpkg -r packagename
列出软件包安装的所有文件清单 : sudo dpkg -L packagename
重新配置一个已安装的软件包(多用于某个软件安装包安装失败) : sudo dpkg-reconfigure packagename
注: dpkg工具无法自动解决DEB软件包之间的依赖关系(apt 可以),所以 只有软件包无依赖关系时才可以使用dpkg工具
如QQ的Linux版本安装 : sudo dpkg -i linuxqq_v1.0.2-betal_i386.deb
- 软件包转换工具aline : 将RPM包转换为DEB软件包(转换后可以使用dpkg工具安装 : sudo aline mplayer-1.2.6-i386.rpm)
不一定都可以转换,且转换后可能出现依赖性关系
高级软件包管理工具 APT (Advanced Package Tool)
用来解决dpkg无法处理软件包间复杂的依赖关系 以及DEB软件包获取的问题
软件源 : Ubuntu 将所有软件包存放在互联网上若干镜像站点上,用户可以选择最适合自己的站点作为软件仓库即软件源
APT 确切来说是一组命令组合
APT常用命令组合:
apt-cache 搜索软件包信息
apt-file 查询软件包信息
apt-get 管理软件包(安装卸载升级)
apt-cdrom 将CD-ROM 加入软件源配置文件
apt-proxy 搭建apt代理服务器
apt-show-versions 显示系统中软件包信息版本
迅速查找DEB软件包 :
安装软件之前查找软件源中是否存在该软件 apt-cache 和 apt-file
apt-cache 在软件安装包的描述等信息中搜索指定关键字
sudo apt-cache search keyword1 keyword2 ... 在软件包描述等信息中搜索指定关键字
sudo apt-cache show packagename 通过软件名搜索
apt-file 在 sources.list 文件对应软件仓库中所有软件包文件列表中进行查询
第一次使用需要安装:
sudo apt-get install apt-file
sudo apt-file update
sudo apt-get install gfceu 搜索所有完整路径(包括文件名)中含有gfceu的安装文件和其所依赖的软件包
APT 安装软件包
注: 系统收到命令后
1. 扫描软件仓库寻找查询依赖关系得出要安装升级或删除的软件包列表并从软件包镜像下载软件包文件 2.先安装其依赖的软件包 3.安装并配置软件包
软件包重新安装用reinstall 删除用apt-get remove 删除并清除配置文件 apt-get -purge remove
sudo apt-get install gfceu 安装gfceu软件包
sudo apt-get install gfceu-ver 安装指定版本
为 APT 设置代理 (目的:获得访问或较好的速度)
首先打开 apt-get 配置文件apt.conf : sudo gedit /etc/apt/apt.conf
若不存在就自己建立 内容:
Acquire {
http::proxy "http://user:password@ProxyAddress:port"
} 代理地址 账号 密码 端口
临时代理在命令行输入 : export http_proxy=http://user:password@ProxyAddress:port/
文本界面软件包管理工具 Aptitude (还有 dselect 和 tasksel)
上半部分树形结构,用光标或j K键移动
下半部分显示所选项目或软件包z的描述
Aptitude 快捷键 :
+ 安装或升级软件包,或解除保持(hold)状态
- 卸载软件包
下划线 卸载软件包并删除其配置文件
L 重新安装软件包
u 更新软件列表
g 执行所有等待执行的任务
q 退出 Aptitude
当需要安装 卸载或升级动作已经标记完毕后,通过快捷键 g 执行操作,任务完成后按 q 退出 Aptitude
Aptitude 使用技巧
Aptitude 命令行操作
sudo aptitude search wine 查找软件包
sudo aptitude install wine 安装软件包
sudo aptitude remove wine 卸载软件包
标记自动安装软件
aptitude 好处: 会标记安装软件包时的依赖软件包,在卸载所需包时自动卸载依赖包
便捷搜索和快速移动功能
软件包列表中按下 / 键弹出搜索 重复搜索按 \
常用搜索模式:
!string 搜索不满足条件string的下一个软件包
string1 | string2 搜索满足条件1或2的软件包
~ddescription 搜索软件描述满足 description 的软件包
~Vversion 搜索版本号中有 version 的软件包
~Dstring 匹配软件包依赖于名字中含有 string 的软件包
~i 匹配已经安装的软件包
~g 匹配没有安装的软件包 或被自动安装但已经不需要再被其他包所依赖的软件包
~b 匹配依赖关系被破坏的软件包
软件包状态标志:
i install已安装 该软件包已安装或升级
r remove删除 该软件包已删除,但不想删除任何配置
p purge清除 用户希望完全删除软件包,包括配置文件
h hold保持 用户希望软件包保持现状
n Not未安装 该软件包没描述信息已知但未在系统中安装
u unknown未知 用户并没有描述他想对软件包进行什么操作
U Unpacked仅解压缩 已将软件包中的所有文件释放,但尚未执行安装和配置
从源码编译DEB软件包
Ubuntu中几乎所有程序源代码都是开放的。Ubuntu用户可以查件和编译最新源码包,将源码包变为DEB软件包安装
在获取源码包前确定在软件园配置文件 /etc/apt/source.list 中添加了deb-src项